�A�� ���ɗ���XML�c�[���W�i6�j
Relaxer�ŃI�u�W�F�N�g��RDB�Ƀ}�b�s���O Page 3

www.netpotlet.com
���c�m�q
2004/5/14

���T���v���A�v���P�[�V�����̎���

�@�����܂ł̂Ƃ���ŁA�������I������̂ŁA���x�̓A�v���P�[�V���������܂��B�A�v���P�[�V�����ł͐}6�Ɏ�����A�̑�����s���܂��B���̃A�v���P�[�V�����͑O���Castor JDO�̃T���v���Ƃقړ��l�ɓ����悤�ɂ��܂����B��r���₷���悤�ɁA���\�b�h�����ł��邾�������ɂ��Ă���܂��B�O��L�����}10�Ɣ�r�����2�–ڂ̑��삪�Ⴄ�����Ƃ����̂��悭������ł��傤�B

�}6�@�T���v���A�v���P�[�V�����̑���
�菇2�i�s���N�F�j�������O��ƈقȂ�

�@�T���v���A�v���P�[�V���������X�g5��RelaxerJDBCTest�N���X�̂悤�ɂȂ�܂����B�e����ɂ‚��Č��Ă݂܂��傤�B

1�j�A���}�[�V����

53      private ElfGoodsList unmarshal(String xmlfile)
54          throws IOException,
55                 SAXException,
56                 ParserConfigurationException {
57          return new ElfGoodsList(new File(xmlfile));
58      }

�@Relaxer����������N���X�ɃA���}�[�V�����Ƃ������\�b�h�͂���܂��񂪁AXML������ǂݍ���ŃC���X�^���X�𐶐����镔����؂�o����unmarshal���\�b�h���`���܂����BRelaxer���g���ƁAXML�����ւ̃p�X���w�肵�āA�c���[�\���̃��[�g�ɓ�����v�f�ɑΉ�����N���X�̃C���X�^���X�𐶐����邾���ŁAXML���f������I�u�W�F�N�g���f���փ}�b�s���O����܂��B

2�j�f�[�^�x�[�X�Ƃ̐ڑ��쐬

40         ConnectionManager connectionManager =
41             ConnectionManager.getInstance(drivername,
42                                           jdbcurl,
43                                           username,
44                                           password);

�@���̃T���v���v���O������Jakarta Commons DBCP���g���ăf�[�^�x�[�X�Ƃ̐ڑ����Ǘ����Ă��܂��B�ڑ����Ǘ����Ă���̂����X�g6��ConnectionManager�N���X�ł��BDBCP���g���ƊȒP�ɃR�l�N�V�����v�[�����O�@�\�̂���ڑ������܂��B

3�j�A���}�[�V���������I�u�W�F�N�g���f�[�^�x�[�X��

64          Connection connection = manager.getConnection();
65          GoodsTable goodsTable =
66              new GoodsTable(connection, tablename);
67          goodsTable.insert(elfGoodsList.getGoods());
68          manager.returnConnection(connection);

�@GoodsListTable��GoodsTable�̂悤��xxxTable�Ƃ������O�̃N���X�ɂ́ASQL��INSERT�����s�ɑ�������insert()���\�b�h������܂��B���̃��\�b�h�̈����ɃI�u�W�F�N�g��XML������URL���w�肷��ƃf�[�^�x�[�X�ɏ������܂�܂��Binsert()���\�b�h�̈����ɂ�DOM�c���[��v�f�A�z��ȂǑ��l�Ȍ^���w��ł���悤�ɂȂ��Ă���̂ŁA�v���O���~���O���ɂ͎����������ꂽxxxTable�N���X�̃\�[�X�R�[�h�����Ă����Ƃ����ł��傤�B

�@Relaxer JDBC�̓g�����U�N�V�����֘A�̃��\�b�h��N���X�����܂���B�f�t�H���g��JDBC API�̃f�t�H���g�̓���ł��鎩���R�~�b�g���K�p����܂��B�R�~�b�g�̃^�C�~���O�𐧌䂵�����ꍇ��xxxTable�N���X��getConnection()���\�b�h��java.sql.Connection�^�̃C���X�^���X���擾���邩�A���̃T���v���̂悤�ɃR�l�N�V�����𒼐ڈ�����悤�ɂ��Ă����܂��B�����JDBC API�ɂ��R�~�b�g�̐��䂪�ł���悤�ɂȂ�܂��B

4�j�v���O�������ō�����I�u�W�F�N�g���f�[�^�x�[�X��

74          String id = "5";
75          ElfGoods elfGoods = new ElfGoods();
76          elfGoods.setIdByString(id);
            �c�c
79          elfGoods.setXmlDateByString("2003-12-12");
80          elfGoods.setDescription("�󑐋�");
81          ElfDetailPricePrice price = new ElfDetailPricePrice();
82          price.setIdByString(id);
            �c�c
85          elfGoods.setDetailPricePrice(price);
86          ElfDetailCategoryCategory category =
87              new ElfDetailCategoryCategory();
88          category.setIdByString(id);
            �c�c
90          elfGoods.setDetailCategoryCategory(category);
91          Connection connection = manager.getConnection();
92          GoodsTable goodsTable =
93              new GoodsTable(connection, tablename);
94          goodsTable.insert(elfGoods);

�@�A���}�[�V�����ɂ�萶�����ꂽ�I�u�W�F�N�g�΂���ł͂Ȃ��A���̂悤�ɂ��ĐV�K�ɍ�����I�u�W�F�N�g���f�[�^�x�[�X�ɓ�����܂��BRelaxer��setIdByString()��setXmlDateByString()�̂悤��setXXXByString()���\�b�h�𐶐�����̂ŁA�f�[�^�^�ɍ��킹���I�u�W�F�N�g��^�C�v��p�ӂ���K�v�͂���܂���B�܂��AJava�ł͌���\��������0�`11�Ȃ̂ŁA2004�N12��12�����Z�b�g�������ꍇ�A�u2004, 11, 12�v�Ƃ��������ɂ��Ȃ���΂Ȃ�܂��񂪁AsetXXXByString()���\�b�h���g���Ɓu2004-12-12�v�̂悤�ɂ��̂܂܎w��ł��܂��B

5�j�f�[�^�x�[�X�̏����I�u�W�F�N�g��

101          Connection connection = manager.getConnection();
102          GoodsTableView goodsTableView =
103              new GoodsTableView(connection, selectClause);
104          ElfGoods[] elfGoodsArray = goodsTableView.select();
105          ElfGoodsList elfGoodsList = new ElfGoodsList();
106          elfGoodsList.setGoods(elfGoodsArray);
107          manager.returnConnection(connection);
108          return elfGoodsList;

�@SQL��SELECT�������̏������s���ɂ�xxxTable�AxxxTableView�̂ǂ��炩�̃N���X��select()��selectAsDocument()�AselectByExpressionAsDocument()�̂悤��selectXXX()���\�b�h���g���܂��BxxxTable�N���X�ɂ�insert()��update()���\�b�h���܂܂�܂����AxxxTableView�N���X�ɂ͂���܂���B�Q�Ƃ���݂̂̏ꍇ��xxxTableView�N���X���g���܂��B

�@Relaxer JDBC�͓Ǝ��̃N�G�������OQL�Ȃǂ��g�킸�ASQL���̂��̂��g���܂��Bselect()���\�b�h���s�O��SELECT�߂𕶎���ŁA�Ⴆ�΁uSELECT * FROM goods�v�̂悤�ɐݒ肵�Ă����A�uWHERE id=3�v�Ȃǂ̏����⎮��t�������ꍇ�́AselectXXX()���\�b�h�̈����œn���܂��B���̃T���v���̏ꍇ�ARelaxerJDBCTest�̃R���X�g���N�^��

47          ElfGoodsList selected =
48              select(connectionManager, "select * from " + tablename + ";");

�̂悤��SELECT�߂��w�肵�A102�A103�s�ڂōs���Ă���悤��xxxTableView�^�̃C���X�^���X���擾����Ƃ��Ɉ����œn���Ă��܂��B

�@Relaxer JDBC��SELECT�������d�g�݂̓V���v���ł����A���s��ɑ��l�Ȍ^�Ńf�[�^���擾�ł���̂��ق���O�^R�}�b�s���O�c�[���ƈႤ�Ƃ���ł��BSELECT�����s���while����1��1�ƒf�[�^�����o���Ȃ���A�I�u�W�F�N�g�ɃZ�b�g���Ă���������O�^R�}�b�s���O�c�[�����������A�X�L�[�}�Œ�`���ꂽ�h�L�������g�̗v�f�₻�̔z��ADOM�c���[�Ȃǂ̂������̑���Ɏg����^�Ŏ擾�ł���悤�ɂȂ��Ă��܂��B���̃T���v���ł�104�s�ڂŎ��s���Ă���悤�ɔz��Ŏ擾���܂����B

6�j�}�[�V����

111  private String getMarshalledString(ElfGoodsList elfGoodsList) {
112      return elfGoodsList.makeTextDocument();
113  }

�@Relaxer�̓A���}�[�V�������l�A�}�[�V�����Ƃ������\�b�h�͐������܂��񂪁ACastor JDO�̃T���v���Ɠ����ɂȂ�悤�ɁA������ڂ��ʂ������\�b�h�������č��܂����BRelaxer�̓}�[�V�������ɃX�g���[���ɏo�͂ł���΂���ł͂Ȃ��A112�s�ڂōs���Ă���悤�ɕ�����Ŏ��o�����Ƃ��ł��܂��B���̂��߁A���̃��\�b�h�͖��O���킹���x�̒Z�����̂ɂȂ��Ă��܂��B

7�jXML�{XSLT��HTML�֕ϊ�

�@JAXP�iJava API for XML Processing�j���g���ĕϊ����܂����A���̕����͑O���Castor JDO�̃T���v���Ƃ܂����������ł��B�e���v���[�g���������̂��g���Ă���̂ŁA�O���̃��X�g8�A9��������Q�Ƃ��Ă��������B

�y���X�g5�@RelaxerJDBCTest.java�i�ʃE�B���h�E�ŕ\�����܂��j�z

�y���X�g6�@ConnectionManager.java�i�ʃE�B���h�E�ŕ\�����܂��j�z

�A�v���P�[�V�������s

�@�T���v���A�v���P�[�V���������s���Ă݂܂��傤�B���̃A�v���P�[�V�������A���}�[�V��������̂����X�g7��XML����goods.xml�ł��B���̓��e���f�[�^�x�[�X�ɓo�^���܂��B���X�g7�͑O���Castor JDO�̃��X�g3�Ɠ������̂ł��Bgoods.xml��elf�v���W�F�N�g��docs�t�H���_�[�ɒu���܂����B

�y���X�g7�@goods.xml�i�ʃE�B���h�E�ŕ\�����܂��j�z

�@���s����ɂ͎��̂悤�ɂ��܂��B

�@�c�[���o�[�̎��s �� ���s... �� Java�A�v���P�[�V�����I�� ��
�@�V�K�i����j �� �����^�u ��
�@�v���O�������� �����i����j �� �K�p �� ���s

����
�v���O��������
docs/goods.xml org.postgresql.Driver jdbc:postgresql:elf
aqua blue goods docs/template.xsl docs/goods.html

�i�f�[�^�x�[�X����elf�ɂ����̂�JDBC URL��jdbc:postgresql:elf�ɂȂ��Ă���j

�@���Ȃ����s�����΁A�}2�Ɏ�����HTML�t�@�C��docs/goods.html������܂��B�Ȃ��A����id�ł͐V�K�̃f�[�^���f�[�^�x�[�X�ɏ������߂Ȃ��̂ŁA�����Ď��s����ꍇ��id��ς��Ď����Ă��������B

���܂Ƃ߁��T���v���_�E�����[�h

�@Castor JDO�Ɣ�r���₷���悤�ɓ���������s���T���v����Relaxer JDBC���g���č���Ă݂܂������A�������������ł��傤���B�ŋ߁A�l�C�̂���O�^R�}�b�s���O�c�[���ł���Hibernate��Castor JDO�Ɏ��Ă���̂ŁAHibernate��Relaxer JDBC�Ƃ̔�r�ɂ��‚Ȃ���̂ł͂Ȃ����Ǝv���܂��B

�@Relaxer��JCP�iJava Community Process�j�Ō��肳�ꂽ�����̎d�l���������Ă���c�[���ł͂���܂��񂪁A���p�҂̖ڐ��ōl�����Ă���c�[���Ƃ�����ł��傤�B�f�[�^�x�[�X�Q�ƕ��@��1�‚̗�ł��BRelaxer JDBC��SQL��m��Ȃ��Ǝg���Ȃ����ʁASQL��m���Ă���v���O���}�ɂ̓X�g���X�Ȃ��g����悤�ɂȂ��Ă��܂��B�f�[�^�x�[�X���������Ƃ���v���O���}��SQL���܂������m��Ȃ��܂܁A�A�v���P�[�V���������Ƃ����󋵂͍l���ɂ����̂ŁA�Ó��ȑI���ł͂Ȃ����Ǝv���܂��B����A�f�[�^�x�[�X����擾�����f�[�^�͑��l�Ȍ^�Ŏ󂯎�邱�Ƃ��ł���̂ŁA�v���O���}���ϊ����Ȃ��Ă����̂܂܎��̑���Ɏg����悤�ɂȂ��Ă���̂ŕ֗��ł��B

�@O�^R�}�b�s���O�c�[���Ȃǎg�킸��JDBC API���̂܂܁A���邢��Jakarta Commons DbUtils�Ȃǂ𗘗p������x�ōς܂��Ă���Ƃ�����������������܂��B�O��L���̂܂Ƃ߂ł��G��܂������A���傤�ǂ���O�^R�}�b�s���O�c�[��������Ȃ��̂�����̂悤�ł��B���܂��钆���炱��Ȃ�g����Ǝv���c�[����T���ɂ́A���낢���O�^R�}�b�s���O�c�[���������āA���ꂼ��̍l�����⓾�ӕ���𒲂ׂ邵���Ȃ��̂ł��傤�B���̋@���Relaxer JDBC�������Ă݂Ă��������B

�@�����XML�ŋL�q����v���[���e�[�V�����c�[���AXUL�i���[��j�����グ��\��ł��B�܂��AXUL�𓮂����T�[�o�T�C�h�̊‹��ɂ�JSF�iJavaServer Faces�j���g���Ă݂܂��B

�@����g�p�����v���O������t�@�C���ނ͈ȉ�����_�E�����[�h�ł��܂��B

�@Windows�‹��ŗ��p�����ꍇ�Aeuc-jp��Windows-31J�ȂǓK���ȃG���R�[�f�B���O�ɕύX���Ă��������B�܂��A���{����܂ރt�@�C����EUC-JP�ɂȂ��Ă��܂��̂ŁA���炩���ߕ����R�[�h��ς��Ă��痘�p�����Ƃ����ł��傤�B�i�����ɑ����j


���Q�l�T�C�g

Page 2 3/3

�@Index
�A�� ���ɗ���XML�c�[���W�i7�j
Relaxer�ŃI�u�W�F�N�g��RDB�Ƀ}�b�s���O
  O�^R�}�b�s���O�c�[���Ƃ��Ă�Relaxer
Relaxer JDBC�Ƃ�
Relaxer�̓���ƃT���v�����s�‹��̃Z�b�g�A�b�v
  �T���v���A�v���P�[�V�����̐݌v
�T���v���A�v���P�[�V�����̎���
�܂Ƃ߁��T���v���_�E�����[�h
�Q�l�T�C�g

 

���֘A�L��

�@�ESE�̂��߂�XML Schema����
�@�EXML�e�N�j�b�N�W
�@�EJava�Ŏ�������DOM/SAX�v���O���~���O



�u�A�� ���ɗ���XML�c�[���W�v


XML & SOA �t�H�[���� �V���L��
��IT���[���}�K�W���@�V������X�^�b�t�̃R���������[���œ͂��܂��i�����j

���ڂ̃e�[�}

HTML5�{UX �L�������L���O

�{������