¤³¤Î¥Ú¡¼¥¸¤òdel.icio.us¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤ò¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤à¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯ ¤³¤Î¥Ú¡¼¥¸¤òlivedoor ¥¯¥ê¥Ã¥×¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤òYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤àYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯
Top / Hibernate / TIPS½¸

´ðËÜÁàºî

HQL¤Ç¥¯¥¨¥ê¤òȯ¹Ô¤¹¤ë

SessionFactory sessionfactory = config.buildSessionFactory();
session = sessionfactory.openSession();
List list = session.find("from UserId as userid where userid.userId like 'Masatomi%'");
¢¬ ·ë²Ì(UserId¥¯¥é¥¹)¤Î³ÊǼ¤µ¤ì¤¿List¤¬Ê֤äƤ¯¤ë

Hibernate3.0¤«¤é¾å¤Îfind¤Ïdeprecated¤Ë¤Ê¤ê¤Þ¤·¤¿¡£3.0¤«¤é¤Ï

Query query = session.createQuery
   ("from UserId as userid where userid.userId like 'Masatomi%'");
List messages = query.list();

¤È¤·¤Æ¤¯¤À¤µ¤¤¡£

HQL¤Îʸˡ¤Ê¤É¤Ï¤¤¤í¤ó¤Ê¥µ¥¤¥È¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç³ä°¦¡£¾å¤Î°ÕÌ£¤À¤±¡£

from UserId[1] as userid[2] where userid[2].userId[3] like 'Masatomi%'
¢¬ °ÕÌ£¤Ï¡¢[1]¤Î¥¯¥é¥¹¤ò¸¡º÷¤·¤Þ¤¹¡£¾ò·ï¤Ï[3]¤Î¥Õ¥£¡¼¥ë¥É¤¬'Masatomi%'¤Ç¤¢¤ë¤è¤¦¤Ê¥ì¥³¡¼¥É
¢¬ [2]¤Ï¥¨¥¤¥ê¥¢¥¹¤Ê¤ó¤Ç¤Ê¤ó¤Ç¤â¤è¤¤¤Ç¤·¤ç¤¦

Hibernate¤Î°ì»þ¥ª¥Ö¥¸¥§¥¯¥È¡¢±Ê³²½¥ª¥Ö¥¸¥§¥¯¥È¡¢Ê¬Î¥¥ª¥Ö¥¸¥§¥¯¥È

°ì»þ¥ª¥Ö¥¸¥§¥¯¥È

Ä̾ï¤ÎJava¥ª¥Ö¥¸¥§¥¯¥È¡£new¤·¤¿¥ä¥Ä¡£¥»¥Ã¥·¥ç¥ó¤Ç´ÉÍý¤µ¤ì¤Æ¤¤¤Ê¤¤¡£Âбþ¤¹¤ë¥í¥¦¤¬¥Æ¡¼¥Ö¥ë¤Ë¤Ê¤¤¡£

±Ê³²½¥ª¥Ö¥¸¥§¥¯¥È

¥»¥Ã¥·¥ç¥ó¤Ç´ÉÍý¤µ¤ì¤Æ¤¤¤ë¡£Âбþ¤¹¤ë¥í¥¦¤¬¥Æ¡¼¥Ö¥ë¤Ë¤¢¤ë¡£

ʬΥ¥ª¥Ö¥¸¥§¥¯¥È

¥»¥Ã¥·¥ç¥ó¤Ç´ÉÍý¤µ¤ì¤Æ¤¤¤Ê¤¤¡£Âбþ¤¹¤ë¥í¥¦¤¬¥Æ¡¼¥Ö¥ë¤Ë¤¢¤ë¡£¥»¥Ã¥·¥ç¥ó¤òÊĤ¸¤¿¤é¤³¤¦¤Ê¤ë¡£

³Æ¾õÂ֤ؤÎÁ«°ÜÊýË¡

°ì»þ¥ª¥Ö¥¸¥§¥¯¥È ---save---> ±Ê³²½¥ª¥Ö¥¸¥§¥¯¥È <-------update---------- ʬΥ¥ª¥Ö¥¸¥§¥¯¥È
°ì»þ¥ª¥Ö¥¸¥§¥¯¥È <--delete-- ±Ê³²½¥ª¥Ö¥¸¥§¥¯¥È --evict,session.close--> ʬΥ¥ª¥Ö¥¸¥§¥¯¥È
°ì»þ¥ª¥Ö¥¸¥§¥¯¥È --saveOrUpdate--> ±Ê³²½¥ª¥Ö¥¸¥§¥¯¥È
ʬΥ¥ª¥Ö¥¸¥§¥¯¥È --saveOrUpdate--> ±Ê³²½¥ª¥Ö¥¸¥§¥¯¥È

¥Ç¥Ð¥Ã¥°Ä¥¤Ã¤Æ¡¢¤¿¤á¤·¤Æ¤ß¤¿

Åö¤¿¤êÁ°¤Î»ö¤ò¤Þ¤È¤á¤Æ¤Þ¤¹¡£¡£¡£

ʬΥ¥ª¥Ö¥¸¥§¥¯¥È¤òsave¤¹¤ë¤Èinsertʸ¤¬Áö¤Ã¤¿

final SessionFactory sessionFactory = getSessionFactory();

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
User user = new User();
user.setName("kino");
session.save(user);
System.out.println(user);
tx.commit();  <-¤³¤Î½èÍý¸å¡¢insert¤¬Áö¤ë
session.flush();
session.close();

System.out.println(user);

session = sessionFactory.openSession();
tx = session.beginTransaction();
session.save(user); ¤µ¤Ã¤­¤ÎʬΥ¥ª¥Ö¥¸¥§¥¯¥È¤òsave¤·¤Æ¤ë
// session.update(user);
// user.setName("hogehoge");
tx.commit();  <-¤³¤Î½èÍý¸å¡¢insert¤¬Áö¤ë(update¤Ç¤Ï¤Ê¤¤)
session.flush();
session.close();

ʬΥ¥ª¥Ö¥¸¥§¥¯¥È¤òsave¤¹¤ë¤È¡¢insert¤¬Áö¤Ã¤¿

ʬΥ¥ª¥Ö¥¸¥§¥¯¥È¤òupdate¤¹¤ë¤Èupdateʸ¤¬Áö¤Ã¤¿(±Ê³²½¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¹¤ë¡¢¤È¤¤¤¦°ÕÌ£¤Çupdateʸ¤¬Áö¤Ã¤Æ¤ë)

final SessionFactory sessionFactory = getSessionFactory();

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
User user = new User();
user.setName("kino");
session.save(user);
System.out.println(user);
tx.commit();  <-¤³¤Î½èÍý¸å¡¢insert¤¬Áö¤ë
session.flush();
session.close();

System.out.println(user);

session = sessionFactory.openSession();
tx = session.beginTransaction();
//session.save(user);
session.update(user); ¤µ¤Ã¤­¤ÎʬΥ¥ª¥Ö¥¸¥§¥¯¥È¤òupdate¤·¤Æ¤ë
user.setName("hogehoge");
tx.commit();  <-¤³¤Î½èÍý¸å¡¢update¤¬Áö¤ë¡£setName¤·¤Æ¤ë¤±¤É¡¢
                ¾å¤Îupdate¤ÈÊ»¤»¤Æ°ì²ó¤À¤±update¤¬Áö¤ë
                (setName¤·¤Ê¤¯¤Æ¤â°ì²ó¤Ïupdate¤¬Áö¤Ã¤¿)
session.flush();
session.close();

ʬΥ¥ª¥Ö¥¸¥§¥¯¥È¤òupdate¤¹¤ë¤È¡¢updateʸ¤¬Áö¤Ã¤¿¡£¤¿¤À¤³¤ì¤ÏʬΥ¥ª¥Ö¥¸¥§¥¯¥È¤ò¤Õ¤¿¤¿¤Ó±Ê³²½¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤·¤¿¤À¤±¡£SQL¤Îupdateʸ¤È¤Ï¤Á¤ç¤Ã¤È°ÕÌ£¤¬°ã¤¦¡£¤Á¤Ê¤ß¤Ëupdateʸ¤òȯ¹Ô¤·¤Ê¤¤¤Ç±Ê³²½¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¹¤ë¤Ë¤Ï

session = sessionFactory.openSession();
tx = session.beginTransaction();
// session.save(user);
// session.update(user);
session.lock(user, LockMode.NONE); <-¤³¤ì
// user.setName("hogehoge");
tx.commit();
session.flush();
session.close();

session.lock¤ò»ÈÍѤ·¤Þ¤¹¡£¾å¤ÎÎã¤À¤Èupdateʸ¤ÏÁö¤é¤Ê¤¤¤±¤É±Ê³²½¤µ¤ì¤Æ¤ë¤ß¤¿¤¤¡£»î¤·¤Ëuser.setName("hogehoge");¤ò¥¢¥ó¥³¥á¥ó¥È¤¹¤ë¤È¡¢tx.commit¤Çupdateʸ¤¬È¯¹Ô¤µ¤ì¤¿¡£lock¥á¥½¥Ã¥É¼«ÂΤǿ·¤·¤¤¥»¥Ã¥·¥ç¥ó¤Ë·ë¤Ó¤Ä¤±¤é¤ì¤¿¤³¤È¤Ë¤è¤Ã¤Æ¡¢setName¤È¤«¤¹¤ë¤À¤±¤Çupdateʸ¤¬Áö¤Ã¤Æ¤¤¤Þ¤¹¤Í¡£

ʬΥ¥ª¥Ö¥¸¥§¥¯¥È¤òupdate¤·¤Ê¤¤¤ÇÊѹ¹¤·¤Æ¤âupdateʸ¤ÏÁö¤é¤Ê¤¤

¤Á¤Ê¤ß¤Ë

session = sessionFactory.openSession();
tx = session.beginTransaction();
// session.save(user);
// session.update(user);
//        session.lock(user, LockMode.NONE);
user.setName("hogehoge");
tx.commit();
session.flush();
session.close();

¤³¤Î¾ì¹çuser¤ÏʬΥ¥ª¥Ö¥¸¥§¥¯¥È¤Ê¤Î¤Ç¡¢¤³¤ì¤Ç¤Ïupdateʸ¤ÏÁö¤é¤Ê¤¤

¤½¤Î¾

¤¹¤Ç¤Ë±Ê³²½¥ª¥Ö¥¸¥§¥¯¥È¤¬¥»¥Ã¥·¥ç¥óÃæ¤Ë¥í¡¼¥É¤µ¤ì¤Æ¤¤¤ë¾õÂ֤ǡ¢¹¹¤ËUpdate¤·¤è¤¦¤È¤¹¤ë¤ÈÎã³°¡£

org.hibernate.NonUniqueObjectException?: a different object with the same identifier value was already associated with the session ¤È¤¤¤¦Îã³°¤¬È¯À¸¤·¤Þ¤¹¤Í¡£

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

User user = new User();
user.setName("hogehoge");
session.save(user);
System.out.println(user);
int num = user.getId();

user = new User();
user.setId(num);
user.setName("name");
session.update(user); <-¤³¤³¤ÇÎã³°
System.out.println(user);

tx.commit();
session.flush();
session.close();

Ʊ¤¸¼±Ê̻ҤÎÃͤÇÊ̤Υª¥Ö¥¸¥§¥¯¥È¤¬¤¹¤Ç¤Ë´ØÏ¢ÉÕ¤¤¤Æ¤¤¤ë¡¢¡¢¤È¡£¤È¤¤¤Ã¤Æ¤âsave¤·¤¿user¤òevict¤·¤ÆÊ¬Î¥¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¹¤ì¤ÐOK¤«¤Ê¡©¤È»×¤Ã¤¿¤±¤ÉÊ̤ÎÎã³°(org.hibernate.AssertionFailure?: possible nonthreadsafe access to session)¤¬tx.commit»þ¤ËȯÀ¸¤·¤Á¤ã¤¤¤Þ¤¹¡£¤½¤â¤½¤â°ì»þ¥ª¥Ö¥¸¥§¥¯¥È¤òupdate¤¹¤ë¤³¤È¼«Âδְã¤Ã¤Æ¤ë¤Î¤«¤Ê¡©

¤¢¡¢flush¤·¤Æ¤«¤éevict¤·¤Ê¤¯¤Á¤ã¤¤¤±¤Ê¤¤¤ó¤Ç¤¹¤Í¡£

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

User user = new User();
user.setName("hogehoge");
session.save(user);
session.flush();
session.evict(user);
int num = user.getId();

user = new User();
user.setId(num);
user.setName("name");
session.update(user); <-Îã³°¤ÏȯÀ¸¤·¤Ê¤¯¤Ê¤ë
System.out.println(user);

tx.commit();
session.flush();
session.close();

¤³¤ì¤ÇOK¤Ç¤·¤¿¡£

save¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ò¤¹¤°evict¤¹¤ë¤È¥¨¥é¡¼

¾å¤Î¤è¤¦¤Ësave¤·¤¿¤¢¤Èflush¤·¤Æ¤«¤éevict¤·¤Ê¤¤¤È¡¢

org.hibernate.AssertionFailure - an assertion failure occured
(this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session)
org.hibernate.AssertionFailure: possible nonthreadsafe access to session

¤¬È¯À¸¤¹¤ë¡£

select¤·¤Æ¤­¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤ÏCGLIB¤Ç³ÈÄ¥¤µ¤ì¤Æ¤¤¤ë

new¤·¤Æsave¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ÏÉáÄ̤Υ¯¥é¥¹¡£session.load¤Ê¤É¤·¤Æselect¤·¤¿¥¯¥é¥¹¤ÏCGLIB¤Ç³ÈÄ¥¤µ¤ì¤¿¥¯¥é¥¹¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£

Ê£¿ô¤ÎÀßÄê¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ·¤¿¤¤

hibernate.cfg.xml¤Ï¤É¤¦¤â¤Ò¤È¤Ä¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹ÀßÄꤷ¤«½ñ¤±¤Ê¤¤¤ß¤¿¤¤(¤¿¤Ö¤ó)¡£ ¤Ç¤â¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï°ì¤Ä¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤À¤±¤Ç¤Ï¤Ê¤¯¡¢Ê£¿ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÀܳ¤¹¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£¤½¤Î¤È¤­¤Ë¡¢Ê£¿ô¤ÎÀßÄê¥Õ¥¡¥¤¥ë¤òÀÚ¤êÂØ¤¨¤ëÊýË¡¤¬¤è¤¦¤ä¤¯Ê¬¤«¤ê¤Þ¤·¤¿¡£¤Á¤Ê¤ß¤ËTorque¤Ç»î¹Ôºø¸í¤·¤¿·Ð°Þ¤ÏTorque/Ê£¿ô¤ÎDB¤ÇƱ»þ¤ËÍøÍѤ¹¤ë¤ò¤´»²¾È¡£

Configuration config = new Configuration();
//    config = config.configure(); // <-Ä̾ï¤ÎÀßÄê¤ÎÆÉ¤ß¹þ¤ß
config = config.configure(new File(
      getServlet().getServletContext().getRealPath(
        "/WEB-INF/lib/hibernate.cfg.hoge.xml")));

¤³¤Î¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ç¡¢¥é¥ó¥¿¥¤¥à¤ËÀßÄê¥Õ¥¡¥¤¥ë¤ò»ØÄꤹ¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ç¤¹¡£¡£

·ë¹ç(´ØÏ¢)¤ò¹Í¤¨¤ë

fig1.gif
  • Member -> WorkGroup?¤òɽ¸½¤¹¤ë

JavaBeans?(¤³¤³¤Ç¤ÏMember)¤Ë¥×¥í¥Ñ¥Æ¥£¤òÄɲ䷤ƥޥåԥ󥰥ե¡¥¤¥ë(Member.hbm.xml)¤Ë

<many-to-one name ="workgroup" column="GROUPNO"
 class="nu.mine.kino.binding.ait.hibernate.Workgroup" cascade="all" outer-join="auto"
 update="false" insert="false" />

¤òÄɲ乤ì¤Ð¤è¤¤¤è¤¦¤À¡£Äɲ䷤ʤ¤¾ì¹ç¤ÏMember#getWorkgroup()¤ÎÊÖ¤êÃͤ¬null¤Ë¤Ê¤ë¤ß¤¿¤¤¡£

Member(N) -> WorkGroup?(1) ¤Ê¤Î¤Ç¡¢many-to-one¤È¤Ê¤ë

  • WorkGroup? -> Member¤òɽ¸½¤¹¤ë

JavaBeans?(¤³¤³¤Ç¤ÏWorkGroup?)¤Ë¥×¥í¥Ñ¥Æ¥£¤òÄɲ䷤ƥޥåԥ󥰥ե¡¥¤¥ë(WorkGroup?.hbm.xml)¤Ë

<set name="memberList" >
 <key ><column name="groupno" /></key>
 <one-to-many class="nu.mine.kino.binding.ait.hibernate.Member" />
</set>

¤òÄɲ乤ì¤Ð¤è¤¤¤è¤¦¤À¡£Äɲ䷤ʤ¤¾ì¹ç¤ÏWorkgroup#getMemberList?()¤ÎÊÖ¤êÃͤ¬null¤Ë¤Ê¤ë¤ß¤¿¤¤¡£

WorkGroup?(1) -> Member(N) ¤Ê¤Î¤Ç¡¢one-to-many¤È¤Ê¤ë

¥¯¥é¥¹À߷פǹͤ¨¤ë¤ÈWorkGroup? -> Member ¤Ï¤¢¤Ã¤Æ¤â¤½¤ÎµÕ¤Ï¤¢¤Þ¤ê¤Ê¤¤¤«¤Ê¤¡¡£¤è¤¦¤¹¤ë¤Ë

aWorkGroup.getMembers()

¤Ï¤¢¤Ã¤Æ¤â

aMember.getWorkGroup()

¤Ï¤Ê¤¤¤³¤È¤¬Â¿¤¤¤è¤¦¤Ë»×¤¦¤±¤É¡£¡£¡£

http://www.atmarkit.co.jp/fjava/rensai3/ormap05/ormap05_1.html

WEB¥¢¥×¥ê¤Î»þ¡¢ÀßÄê¥Õ¥¡¥¤¥ë¤Ê¤É¤Ï¤É¤³¤ËÃÖ¤¯¤Ù¤­¤«¡£

hibernate.cfg.xml
classes¤Îľ²¼¤Ê¤É¤ËÃÖ¤¤¤Æ¡¢³Æ¥ê¥½¡¼¥¹¤ÎÀßÄê¥Õ¥¡¥¤¥ë¤Ï
<mapping resource="nu/mine/kino/MtAuthor.hbm.xml" />
¤Ê¤É¤È»ØÄꤹ¤ë
³Æ¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀßÄê¥Õ¥¡¥¤¥ë
Java¥Õ¥¡¥¤¥ë¤ÈƱ¤¸¾ì½ê¤ËÃÖ¤¯¡£

middlegen¤Çºî¤Ã¤¿hbm¥Õ¥¡¥¤¥ë¤Ë¤Ä¤¤¤Æ

¤¿¤È¤¨¤Ð

<id name="id" type="java.lang.Integer" column="id" >
  <meta attribute="field-description">
     @hibernate.id
     generator-class="Increment"
     type="java.lang.Integer"
     column="id"
  </meta>
  <generator class="Increment" />
</id>

¤Î

  <meta attribute="field-description">
     @hibernate.id
     generator-class="Increment"
     type="java.lang.Integer"
     column="id"
  </meta>

¤ÎÉôʬ¤Ï¡¢¥³¥á¥ó¥È¤Ë»È¤ï¤ì¤ë¤À¤±¡¢¤À¤È»×¤¦¡£

MySQL¤Îauto_increment¤Ë¤Ä¤¤¤Æ

`name_id` int(10) unsigned NOT NULL auto_increment,

¤ÈÄêµÁ¤µ¤ì¤ë¥«¥é¥à¤¬¤¢¤ë¥Æ¡¼¥Ö¥ë¤Ë¤Ä¤¤¤Æ¡¢middlegen¤ÇJavaBeans?¤Èhbm.xml¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤¿¤é°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£

<id
    name="nameId"
    type="java.lang.Object"
    column="name_id"
>
    <meta attribute="field-description">
       @hibernate.id
        generator-class="assigned"
        type="java.lang.Object"
        column="name_id"

    </meta>
    <generator class="assigned" />
</id>

¼ÂºÝ¤ÏInteger¤È¥Þ¥Ã¥Ô¥ó¥°¤·¤ÆÍߤ·¤¤¤Î¤Ç¤¹¤¬¡¢¤¦¤Þ¤¯¤¤¤«¤Ê¤¤¤Ç¤¹¤Í¡£¤È¤ê¤¢¤¨¤º¼«Ê¬¤Çjava.lang.Integer¤ËÊѹ¹¤·¤Þ¤·¤¿¡£¤¢¤È

<generator class="assigned" />

¤ò

<generator class="increment" />

¤ËÊѹ¹¤·¤Þ¤·¤¿¡£¤â¤Á¤í¤óJava¥½¡¼¥¹¤âºî¤êľ¤·¤Þ¤·¤¿¡£

Ê£¹ç¥­¡¼¤ò»È¤Ã¤¿¥Æ¡¼¥Ö¥ë¤Î¥Þ¥Ã¥Ô¥ó¥°¡£

¼ç¥­¡¼¤¬Ê£¿ô¡¢¤¿¤È¤¨¤Ð

create table Customer3 (customer_id varchar(20) not null, 
item_id varchar(20) not null, 
value varchar(255), 
upd_date timestamp,
primary key (customer_id, item_id));

¤È¤¤¤¦¤è¤¦¤Ëcustomer_id,item_id¤Ç¥æ¥Ë¡¼¥¯¤Ë¤Ê¤ë¥Æ¡¼¥Ö¥ë¤Î¥Þ¥Ã¥Ô¥ó¥°¤Ë¤Ä¤¤¤Æ¤Ç¤¹¡£

XDoclet¤Ê¤É¤ò»È¤Ã¤Æhbm.xml¤òºî¤ë¾ì¹ç¤¬¤Û¤È¤ó¤É¤À¤È»×¤¤¤Þ¤¹¤Î¤Ç¡¢¤Þ¤º¤ÏPOJO¤«¤é¡£·ëÏÀ¤ò¸À¤¦¤È¡¢¾å¤ÎÊ£¹ç¥­¡¼¤ò°ì¤Ä¤Î¥ª¥Ö¥¸¥§¥¯¥È¤È¤¹¤ë¤¿¤á¤Ë°ì¤ÄPOJO¤òºî¤ê¤Þ¤¹¡£

public class Customer3Id implements Serializable {
  private String customerId;
  private String itemId;
  public Customer3Id() {
  }


  /**
   * @hibernate.property column = "customer_id" not-null = "true" length ="20"
   */
  public String getCustomerId() {
    return customerId;
  }

  /**
   * @hibernate.property column = "item_id" not-null = "true" length = "20"
   */
  public String getItemId() {
    return itemId;
  }

  public String toString(){...}
  public boolean equals(Object obj) {...}
  public int hashCode() {...}
}

¤É¤¦¤â¡¢

  • toString,equals,hashCode¤Ïɬ¤ºOverride¤·¤Ê¤¯¤Æ¤Ï¤¤¤±¤Ê¤¤
  • implements Serializable¤Ç¤¢¤ë¤³¤È ¤ß¤¿¤¤¤Ç¤¹¡£

¤Ç¡¢¼ÂºÝ¤Î¥ì¥³¡¼¥É¤ÎÊý(¡©)¤ÎPOJO¤Ï¤µ¤Ã¤­¤ÎÊ£¹ç¥ª¥Ö¥¸¥§¥¯¥È¤òÊÝ»ý¤·¤Æ¤ª¤­¤Þ¤¹¡£

/**
 * @hibernate.class table = customer3 
 */
public class Customer3 {
  private Customer3Id compositeId;

  ....

  /**
   * @return compositeId ¤òÌᤷ¤Þ¤¹¡£
   * @hibernate.id generator-class="assigned"
   */
  public Customer3Id getCompositeId() {
    return compositeId;
  }
}

XDoclet¤Çhbm¤òÀ¸À®¤·¤¿¤È¤³¤í¡¢

<?xml version="1.0" encoding="UTF-8"?>
<hibernate-mapping>
  <class
    name="nu.mine.kino.plugin.hsqldb.hibernate.Customer3" >
    <composite-id  name="compositeId"
      class="nu.mine.kino.plugin.hsqldb.hibernate.Customer3Id">
           <key-property
            name="customerId"
            type="java.lang.String"
            column="customer_id"
            length="20"
        />
           <key-property
            name="itemId"
            type="java.lang.String"
            column="item_id"
            length="20"
        />
    </composite-id>
    <property
      name="value"
    ....................
  </class>
</hibernate-mapping>

¤Ê¤ó¤Æ¤Î¤¬¤Ç¤­¤¢¤¬¤ê¤Þ¤·¤¿¡£¥Ý¥¤¥ó¥È¤ÏÊ£¹ç¥­¡¼¤Ï¤½¤Î¥­¡¼¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òºî¤ëɬÍפ¬¤¢¤ë¡¢¤Ã¤Æ¤³¤È¤Ç¤¹¤«¤Í¡£¤³¤ì¡¢·ë¹½¤á¤ó¤É¤¯¤µ¤¤¤Í¡£

middlegen¤ª¤Ü¤¨¤¬¤­

http://boss.bekk.no/boss/middlegen/

samples/build.xml¤ò½¤Àµ¤·Î®ÍѤ·¤Þ¤¹¡£¤Þ¤º¤Ï

<!ENTITY database SYSTEM "file:./config/database/hsqldb.xml" >

¤ò¼ÂºÝ¤Ë»ÈÍѤ¹¤ë¥Ç¡¼¥¿¥Ù¡¼¥¹ÍѤΥե¡¥¤¥ë¤ËÊѹ¹¤·¤Þ¤¹¡£¤Û¤«¤Ë¤Ï

name: java¥¯¥é¥¹¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ËÂбþ
database.name :¤³¤ì¤âÊѤ¨¤ë¤Î¤«¤Ê¡©

¤Ê¤É¤òÊѹ¹¤·¤Þ¤¹¡£¤Þ¤¿¾å¤Ç»ØÄꤷ¤¿

file:./config/database/XXXXX.xml

¤ÎÆâÍÆ¤ò¡¢¸Ä¡¹¿Í¤Î´Ä¶­¤Ë±þ¤¸¤Æ½ñ¤­´¹¤¨¤Þ¤¹¡£¤¿¤È¤¨¤Ð¤³¤ó¤Ê´¶¤¸:

<property name="database.url"  value="jdbc:sybase:Tds:[IP]:[PORT]/[DB]"/>
<property name="database.userid"    value="[ID]"/>
<property name="database.password"  value="[PASS]"/>
<property name="database.schema"    value="dbo"/> <-¤ª¤â¤Ë¤³¤ì¡©
<property name="database.catalog"   value="XXXXXX"/> use XXXXXX¤È¤«¤¹¤ë¤ä¤Ä

¤Ç¡¢ant hbm2java¤ÇOK!*1¡£

¤Á¤Ê¤ß¤Ë¡¢¼«Æ°À¸À®¤µ¤ì¤¿xml¥Õ¥¡¥¤¥ë¤ò¼ê¤Ç½¤Àµ¤·¤ÆJava¤òÀ¸À®¤·¤¿¤¤¾ì¹ç¤Ï¡¢hbm2java¥¿¥¹¥¯¤Îdepend¤ò¤Ê¤¯¤·¤Æhbm2javañÂÎ¤Ç²ÔÆ°¤¹¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¡£¤½¤¦¤·¤Ê¤¤¤Èmiddlegen¥¿¥¹¥¯¤È¤«¤¬Æ°¤¤¤Æxml¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤Æ¤·¤Þ¤¦¡£


¤³¤Îµ­»ö¤Ï

ÁªÂò»è Åêɼ
¤ª¤â¤·¤í¤«¤Ã¤¿ 50  
¤½¤¦¤Ç¤â¤Ê¤¤ 8  
  • HQL¤Îʸˡ¤Ã¤Æ¤Ê¤«¤Ê¤«¤ª¤Ü¤¨¤é¤ì¤ó¡£ "from Messages as m order by m.messageText asc" ¤È¤¤¤ï¤ì¤Æ¤â¡£¡£¡£ -- ¤­¤Î? 2006-06-18 21:33:13 (Æü)
¤³¤Î¥Ú¡¼¥¸¤òdel.icio.us¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤ò¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤à¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯ ¤³¤Î¥Ú¡¼¥¸¤òlivedoor ¥¯¥ê¥Ã¥×¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤òYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤àYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯
Top / Hibernate / TIPS½¸

¸½ºß¤Î¥¢¥¯¥»¥¹:38134


*1 ¤Û¤«¤Ë¤âant middlegen¤Ç¤µ¤Þ¤¶¤Þ¤Ê¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤ë¡£

źÉÕ¥Õ¥¡¥¤¥ë: filefig1.gif 866·ï [¾ÜºÙ]

¥È¥Ã¥×   ÊÔ½¸ Åà·ë º¹Ê¬ ¥Ð¥Ã¥¯¥¢¥Ã¥× źÉÕ Ê£À½ ̾Á°Êѹ¹ ¥ê¥í¡¼¥É   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS
Last-modified: 2011-08-09 (²Ð) 08:25:24 (284d)