Hibernate¤È¥È¥é¥ó¥¶¥¯¥·¥ç¥ó´ÉÍý¤Ë´Ø¤¹¤ë²ÝÂê †Hibernate¥Ù¡¼¥¹¤ÎDAO¤òºî¤Ã¤¿¾ì¹ç¤Ë¡¢¥È¥é¥ó¥¶¥¯¥·¥ç¥ó½èÍý¤ò¤É¤Î¤è¤¦¤Ëµ½Ò¤¹¤ë¤«¤¬ÌäÂê¤Ë¤Ê¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ ¤¿¤È¤¨¤Ð²¼µ¤Î¤è¤¦¤ÊÆó¤Ä¤Î¥Æ¡¼¥Ö¥ë ¤ËÂФ·¤Æ¤½¤ì¤¾¤ìMemberDAO¤ÈWorkGroupDAO¤òºî¤ë¤È»×¤¤¤Þ¤¹¡£¤µ¤é¤Ë¤½¤ÎDAO¤ò»ÈÍѤ¹¤ë¥Ó¥¸¥Í¥¹¥á¥½¥Ã¥É¡¢¤¿¤È¤¨¤Ð ¤Ê¤ó¤Æ¤Î¤¬ÄêµÁ¤µ¤ì¤ë¤È»×¤¤¤Þ¤¹¡£ ¤³¤Î¤È¤¡¢¤¢¤ë½èÍý¤Î¾ì¹ç¤Ï¥á¥½¥Ã¥Éñ°Ì¤Ç¥È¥é¥ó¥¶¥¯¥·¥ç¥ó´ÉÍý¤·¡¢¤Û¤«¤Î½èÍý¤Î¾ì¹ç¤ÏÊ£¿ô¤Î¥á¥½¥Ã¥É¤Ë¤Þ¤¿¤¬¤Ã¤Æ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó´ÉÍý¤·¤¿¤¤¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¾å¤ÎÎã¤À¤È¡¢
¤È¤·¤¿¾ì¹ç¡¢
¤È¤Ê¤ê¤Þ¤¹¡£°ì¤Ä¤á¤ÎÎã¤À¤ÈaddMemberÆâ¤Ç¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Î³«»Ï¡¦½ªÎ»¤Î½èÍý¤ò½ñ¤±¤Ð¤è¤¤¤Ç¤¹¤¬¡¢Æó¤Ä¤á¤ÎÎã¤ò¹Í¤¨¤ë¤ÈaddMemberÆâ¤Ç¥È¥é¥ó¥¶¥¯¥·¥ç¥ó³«»Ï¤È½ªÎ»¤Î½èÍý¤ò¤·¤Á¤ã¤¦¤È¤Þ¤º¤¤¤ï¤±¤Ç¤¹¤Í¡£¤Ä¤Þ¤ê¤¢¤ë¥á¥½¥Ã¥É¤ËÂФ·¤Æ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Î¥¹¥³¡¼¥×(¶³¦¡©)¤¬¾ìÌ̤ˤè¤Ã¤Æ°Û¤Ê¤ë¤³¤È¤¬¤¢¤ë¤Î¤Ç¤¹¤¬¡¢Spring¤Ç¤Ï¤³¤ÎÊÕ¤ò¥È¥é¥ó¥¶¥¯¥·¥ç¥ó½èÍý¤òÀë¸ÀŪ¤Ëµ½Ò¤¹¤ë¤³¤È¤Ç²ò·è¤·¤Æ¤¤¤Þ¤¹¡£ ¼ÂºÝ¤Ë¤ä¤Ã¤Æ¤ß¤ë †¤³¤ÎÊÕ¤ò¹Í¤¨¤ë¤¿¤á¤Ë¶ñÂÎÎã¤Ç¹Ô¤¤Þ¤¹¡£º£²ó¹Í¤¨¤ë¥¯¥é¥¹·²¤ÎÁ´ÂÎÁü¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£Îã¤òñ½ã¤Ë¤¹¤ë¤¿¤á¤Ë¡¢°ì¤Ä¤Î¥Æ¡¼¥Ö¥ë¤ËÂФ¹¤ë¥È¥é¥ó¥¶¥¯¥·¥ç¥ó´ÉÍý¤ò¹Í¤¨¤Þ¤¹¡£ UserBL->UserDao->¥Ç¡¼¥¿¥Ù¡¼¥¹ ¤È¤¤¤¦¹½À®¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢UserBL¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó»ØÄê¤ò¤É¤¦¤ä¤ë¤«¡¢¤È¤¤¤¦¤³¤È¤Ç¤¹¤Í¡£ Âбþ¤¹¤ë¥Æ¡¼¥Ö¥ë¤Ï°Ê²¼¤ÎÄ̤êºîÀ®¤·¤Þ¤·¤¿¡£ create table MKINO.USER_ATTR ( USERID varchar2(100) not null, NAME varchar2(1000), primary key (USERID) ); ³Îǧ¤·¤Æ¤ß¤Þ¤¹¡£ -bash-3.00$ sqlplus mkino/xxxx SQL*Plus: Release 10.2.0.1.0 - Production on ÌÚ 5·î 3 21:51:40 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production ¤ËÀܳ¤µ¤ì¤Þ¤·¤¿¡£ SQL> desc user_attr; ̾Á° NULL? ·¿ ----------------------------------------- -------- ---------------------------- USERID NOT NULL VARCHAR2(100) NAME VARCHAR2(1000) SQL> OK¤Ç¤¹¡£¤Á¤Ê¤ß¤Ë¤³¤ÎÊդΥ桼¥¶¤Ï°Ê²¼¤Î¤è¤¦¤Ëºî¤Ã¤Æ¤Þ¤¹¡£¤¢¥×¥í¥À¥¯¥È¤ÏOracle 10g XE¤Ç¤¹¡£ -bash-3.00$ . /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh
-bash-3.00$ sqlplus / as sysdba
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
¤ËÀܳ¤µ¤ì¤Þ¤·¤¿¡£
SQL> CREATE USER "MKINO" PROFILE "DEFAULT"
IDENTIFIED BY "xxxx" DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "TEMP"
QUOTA UNLIMITED
ON "USERS"
ACCOUNT UNLOCK; 2 3 4 5 6
¥æ¡¼¥¶¡¼¤¬ºîÀ®¤µ¤ì¤Þ¤·¤¿¡£
SQL> create role MKINO_ROLE; ¥í¡¼¥ë¤¬ºîÀ®¤µ¤ì¤Þ¤·¤¿¡£ SQL> GRANT CREATE SESSION, CREATE ANY INDEX, CREATE ANY VIEW, CREATE ANY SYNONYM, CREATE ANY SEQUENCE, CREATE ANY TABLE, SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE TO MKINO_ROLE; 2 3 4 5 6 7 8 9 10 11 12 ¸¢¸ÂÉÕÍ¿¤¬À®¸ù¤·¤Þ¤·¤¿¡£ SQL> GRANT MKINO_ROLE TO MKINO; SQL> ¸¢¸ÂÉÕÍ¿¤¬À®¸ù¤·¤Þ¤·¤¿¡£ SQL> SQL> quit Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production¤È¤ÎÀܳ¤¬ÀÚÃǤµ¤ì¤Þ¤·¤¿¡£ -bash-3.00$ Spring¤ò»È¤Ã¤Æ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó½èÍý¤òµ½Ò¤¹¤ë †¤µ¤Æ¡¢Spring¤Ç¤ÏBL¤Î¥Ó¥¸¥Í¥¹¥á¥½¥Ã¥É¤ËÂФ·¤Æ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó½èÍý¤òÀë¸ÀŪ¤ËÄɲ乤뤳¤È¤¬¤Ç¤¤ë¤È¤¤¤¤¤Þ¤·¤¿¤¬¡¢°Ê²¼¤Î¤è¤¦¤Ë¤ä¤ê¤Þ¤¹¡£ ¤Þ¤º¡¢¤â¤È¤ÎBL¤Î̾Á°¤òuserBL¤«¤éuserBLTarget¤ËÊѹ¹¤·¡¢userBL¤È¤¤¤¦Ì¾Á°¤ÎBeanÀßÄê¤ò¿·µ¬¤ËºîÀ®¤·¤Þ¤¹¡£¤½¤Î¿·¤¿¤ÊJavaBeans?¤Î·¿¤ÏSpring¤¬Ä󶡤·¤Æ¤¯¤ì¤ëProxy¥¯¥é¥¹¤Ç¡¢³°Éô¤«¤é¸«¤¿¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï¸µ¤ÎuserBL¤ÈƱ¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¸«¤¿Ìܤϳ°Éô¤«¤é¸«¤¿¤éÁ´¤¯ÊѤï¤Ã¤Æ¤¤¤Ê¤¤¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ ¤½¤ÎProxy¤Î¥¿¥°ÉÕ¤±¤Ç¤¹¤¬¡¢¥È¥é¥ó¥¶¥¯¥·¥ç¥óÀßÄê¤ä¡¢¥¿¡¼¥²¥Ã¥È¤Ë¤Ê¤ëJavaBeans?(¸µ¤ÎuserBL¤Î¤³¤È)¤Î»ØÄê¤Ê¤É¤òµ½Ò¤·¤Æ¤ª¤¤Þ¤¹¡£ ¤µ¤Æ½èÍý¤Îή¤ì¤Ç¤¹¤¬¡¢¼ÂºÝBL¤ò»È¤¦¥×¥í¥°¥é¥à¤ÏuserBL¤È¤¤¤¦¥¡¼¤ÇSpring¤«¤éJavaBeans?¤ò¼èÆÀ¤¹¤ë¤Î¤Ç¡¢½èÍý¥·¡¼¥±¥ó¥¹¤Ï BL¤ò»È¤¦¥×¥í¥°¥é¥à -> userBL ¤À¤Ã¤¿¤Î¤¬ BL¤ò»È¤¦¥×¥í¥°¥é¥à -> userBL -> userBLTarget ¤È¤Ê¤ê¤Þ¤¹¡£ ³°Éô¤«¤é¸«¤¿¤é¸«¤¿ÌÜ¤ÏÆ±¤¸¤À¤±¤É¡¢¼ÂºÝ¤ÎBL¤Î´Ö¤ËÊ̤Υ¯¥é¥¹(¾å¤ÎProxy¥¯¥é¥¹¤Ç¤¹¤Í)¤¬¶´¤Þ¤ì¤ëÍѤˤʤê¤Þ¤¹¡£·ë¶É¡¢Spring¤Î¥¿¥°ÉÕ¤±¤Ï°Ê²¼¤Î¤è¤¦¤ËÊѹ¹¤µ¤ì¤Þ¤·¤¿¡£ ´Ö¤Ë¶´¤Þ¤ì¤¿POJO¤Ï°Ê²¼¤Î¤è¤¦¤ËSpring¤ÇInjection¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ <bean id="userBL"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager" />
</property>
<property name="target"> ¢¥¿¡¼¥²¥Ã¥È¤Ë¤¹¤ëPOJO¤ò»ØÄê
<ref bean="userBLTarget" />
</property>
<property name="transactionAttributes">
<props> ¢POJO¤Î¥á¥½¥Ã¥É¤ËÂФ·¤Æ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤ÎÀßÄê¤òµ½Ò
<prop key="*">PROPAGATION_REQUIRED</prop>
<!-- <prop key="create">PROPAGATION_MANDATORY</prop> -->
</props>
</property>
</bean>
¥È¥é¥ó¥¶¥¯¥·¥ç¥ó´ÉÍýÊýË¡¤Ë¤Ä¤¤¤Æ †¤µ¤Æ»ÈÍѤ¹¤ë¦¤«¤é¸«¤¨¤ëPOJO¤Ç¤¹¤¬¡¢¤â¤È¤â¤È¤ÏUserBL¥¯¥é¥¹¤À¤Ã¤¿¤Î¤Ç¤¹¤¬º£¤Ï´Ö¤Ë org.springframework.transaction.interceptor.TransactionProxyFactoryBean ¤¬¶´¤Þ¤ì¤Æ¤¤¤ë·Á¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥¯¥é¥¹¤ò·Ðͳ¤¹¤ë¤³¤È¤Ç¥¿¡¼¥²¥Ã¥È¤È¤Ê¤ëUserBL¥¯¥é¥¹¤Î³Æ¥á¥½¥Ã¥É¤Ë¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Î»ØÄê¤ò½ñ¤¯¤³¤È¤¬¤Ç¤¤ë¤È¤¤¤¦¥ï¥±¤Ç¤¹¡£¾å¤ÎÎã¤Ï <property name="transactionAttributes">
<props> ¢POJO¤Î¥á¥½¥Ã¥É¤ËÂФ·¤Æ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤ÎÀßÄê¤òµ½Ò
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
¤È¤Ê¤Ã¤Æ¤¤¤Æ¡¢Á´¤Æ¤Î¥á¥½¥Ã¥É¤òPROPAGATION_REQUIRED¤Ë¤¹¤ë¡¢¤È¤¤¤¦»ØÄê¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£PROPAGATION_REQUIRED¤Ï¡¢¤³¤ÎBL¤Î¥á¥½¥Ã¥É¤¬¸Æ¤Ð¤ì¤¿¤È¤¤Ë¡¢¤¹¤Ç¤Ë¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬³«»Ï¤µ¤ì¤Æ¤¤¤¿¤é¤½¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Ë»²²Ã¤¹¤ë¡¢³«»Ï¤µ¤ì¤Æ¤Ê¤«¤Ã¤¿¤é¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤ò³«»Ï¤¹¤ë¡¢¤È¤¤¤¦°ÕÌ£¤Ë¤Ê¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¤³¤Î¥á¥½¥Ã¥É¤¬¸Æ¤Ð¤ì¤¿¤È¤¤Ë¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬³«»Ï¤µ¤ì¤Æ¤Ê¤«¤Ã¤¿¤é¡¢BL¤Î¥á¥½¥Ã¥É¤Î¤Ï¤¸¤á¤Ç¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬³«»Ï¤µ¤ì¡¢Á´¤Æ¤Î½èÍý¤¬ÌäÂê¤Ê¤¯½ª¤ï¤Ã¤¿¤é¾¡¼ê¤Ë¥³¥ß¥Ã¥È¤¹¤ë¡¢¤È¤¤¤¦¤³¤È¤òSpring¤¬¤ä¤Ã¤Æ¤¯¤ì¤ë¤ï¤±¤Ç¤¹¡£¤³¤ì¡¢¤¹¤´¤¤¤³¤È¤Ç¤¹¤Í¡£ ¼ÂºÝ¤ËBL¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¤ß¤ë †¼ÂºÝ¤Ë¤ä¤Ã¤Æ¤ß¤Þ¤¹¡£Spring·Ðͳ¤ÇBL¤ò¼èÆÀ¤·¡¢BL¤Îcreate¥á¥½¥Ã¥É¤Ç¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¥Ç¡¼¥¿¤òInsert¤·¤Æ¤¤¤Þ¤¹¡£ public class SpringMain {
public static void main(String[] args) throws IOException {
DOMConfigurator.configure("log4j.xml");
ApplicationContext context = new FileSystemXmlApplicationContext(
new String[] { "beans.xml", "hibernate-spring_test.xml" });
String name = getUniqueKey();
IUserBL bl = (IUserBL) context.getBean("userBL");
bl.create(new UserAttr(name, "¥µ¥ó¥×¥ë¥æ¡¼¥¶£±"));
}
/**
* PK¤òÀ¸À®¤·¤¿¤¤¤À¤±¡£ËܼÁŪ¤Ê°ÕÌ£¥Ê¥·
*/
private static String getUniqueKey() throws IOException {
File temp = File.createTempFile("abc", "");
temp.deleteOnExit();
String name = temp.getName();
return name;
}
}
¼Â¹Ô·ë²Ì¤Ï°Ê²¼¤ÎÄ̤ê org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from file [T:\workspace_rad\SpringDBSamples\beans.xml] org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from file [T:\workspace_rad\SpringDBSamples\hibernate-spring_test.xml] org.springframework.orm.hibernate3.LocalSessionFactoryBean - Building new Hibernate SessionFactory org.hibernate.cfg.SettingsFactory - RDBMS: Oracle, version: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production org.hibernate.cfg.SettingsFactory - JDBC driver: Oracle JDBC driver, version: 10.2.0.1.0 org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.OracleDialect org.hibernate.transaction.TransactionFactoryFactory - Using default transaction strategy (direct JDBC transactions) org.hibernate.transaction.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended) org.springframework.orm.hibernate3.HibernateTransactionManager - Using DataSource [org.apache.commons.dbcp.BasicDataSource@6e1dec] of Hibernate SessionFactory for HibernateTransactionManager org.springframework.orm.hibernate3.HibernateTransactionManager - Using transaction object [org.springframework.orm.hibernate3.HibernateTransactionManager$HibernateTransactionObject@dc86eb] org.springframework.orm.hibernate3.HibernateTransactionManager - Creating new transaction with name [nu.mine.kino.bl.IUserBL.create] org.springframework.orm.hibernate3.HibernateTransactionManager - Opened new Session [org.hibernate.impl.SessionImpl@e29820] for Hibernate transaction org.springframework.orm.hibernate3.HibernateTransactionManager - Preparing JDBC Connection of Hibernate Session [org.hibernate.impl.SessionImpl@e29820] -----------------------------afterTransactionBegin org.springframework.orm.hibernate3.HibernateTransactionManager - Exposing Hibernate transaction as JDBC transaction [org.apache.commons.dbcp.PoolableConnection@1c286e2] nu.mine.kino.bl.UserBL - create(UserAttr) - start nu.mine.kino.bl.UserBL - create(UserAttr) - end org.springframework.orm.hibernate3.HibernateTransactionManager - Triggering beforeCommit synchronization org.springframework.orm.hibernate3.HibernateTransactionManager - Triggering beforeCompletion synchronization org.springframework.orm.hibernate3.HibernateTransactionManager - Initiating transaction commit org.springframework.orm.hibernate3.HibernateTransactionManager - Committing Hibernate transaction on Session [org.hibernate.impl.SessionImpl@e29820] Hibernate: insert into MKINO.USER_ATTR (NAME, USERID) values (?, ?) -----------------------------beforeTransactionCompletion -----------------------------afterTransactionCompletion org.springframework.orm.hibernate3.HibernateTransactionManager - Triggering afterCompletion synchronization org.springframework.orm.hibernate3.HibernateTransactionManager - Closing Hibernate Session [org.hibernate.impl.SessionImpl@e29820] after transaction org.springframework.orm.hibernate3.SessionFactoryUtils - Closing Hibernate Session ¤Ê¤ó¤Î¤³¤Ã¤Á¤ã¤Ã¤Æ´¶¤¸¤Ç¤¹¤±¤É¡¢BL¤Î¥á¥½¥Ã¥É¤¬³«»Ï¤µ¤ì¤ëºÝ¤Ë¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬³«¤«¤ì¡¢¥á¥½¥Ã¥É¤¬½ª¤ï¤Ã¤¿¸å¤Ë¥³¥ß¥Ã¥È¤¬¹Ô¤ï¤ì¤Æ¤¤¤ë¤Î¤¬¤ï¤«¤ë¤È»×¤¤¤Þ¤¹¡£¤Ä¤¤¤Ç¤ËHibernate¤ÎSession¤È¤«¤âƱ¤¸¥¿¥¤¥ß¥ó¥°¤Ç³«¤¤¤¿¤êÊĤ¸¤¿¤ê¤¹¤ë¤ó¤Ç¤¹¤Í¡£ RuntimeÎã³°»þ¤Ï¾¡¼ê¤Ë¥í¡¼¥ë¥Ð¥Ã¥¯ †¼¡¤Ë¥á¥½¥Ã¥ÉÆâ¤Ç¤ï¤¶¤ÈRuntimeÎã³°¤ò¥¹¥í¡¼¤·¤¿¾ì¹ç¤Î¥í¥°¤Ç¤¹¡£ nu.mine.kino.bl.UserBL - create(UserAttr) - start org.springframework.orm.hibernate3.HibernateTransactionManager - Triggering beforeCompletion synchronization org.springframework.orm.hibernate3.HibernateTransactionManager - Initiating transaction rollback org.springframework.orm.hibernate3.HibernateTransactionManager - Rolling back Hibernate transaction on Session [org.hibernate.impl.SessionImpl@e29820] Exception in thread "main" java.lang.RuntimeException: ¤ª¡¼Îã³° -----------------------------afterTransactionCompletion org.springframework.orm.hibernate3.HibernateTransactionManager - Triggering afterCompletion synchronization org.springframework.orm.hibernate3.HibernateTransactionManager - Closing Hibernate Session [org.hibernate.impl.SessionImpl@e29820] after transaction org.springframework.orm.hibernate3.SessionFactoryUtils - Closing Hibernate Session Spring¤¬Àµ¤·¤¯¥í¡¼¥ë¥Ð¥Ã¥¯¤·¤Æ¤¯¤ì¤Æ¤¤¤Þ¤¹¡£¼«Ê¬¤¿¤Á¤Ç¤ä¤ëɬÍפϤʤ¤¤ï¤±¤Ç¤¹¡£ ¤Á¤Ê¤ß¤ËSpring¤Ç¤ÏRuntimeÎã³°¤Ï¥í¡¼¥ë¥Ð¥Ã¥¯¡¢¤½¤Î¾¤ÎÉáÄ̤ÎÎã³°¤Ï¥³¥ß¥Ã¥È¡¢¤È¤¤¤¦¤Î¤¬¥Ç¥Õ¥©¥ë¥È¤Îư¤¤ß¤¿¤¤¤Ç¤¹¡£Àè¤Î¥á¥½¥Ã¥É»ØÄê¤Ç¡¢ÉáÄ̤ÎÎã³°¤â¥í¡¼¥ë¥Ð¥Ã¥¯¤ß¤¿¤¤¤Ëµóư¤òÊѤ¨¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£ ¤½¤Î¾¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó»ØÄê †Àè¤ÎPROPAGATION_REQUIRED¤Ï¤¢¤Ã¤¿¤é¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Ë»²²Ã¡¢¤Ê¤«¤Ã¤¿¤é¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤ò³«»Ï¤¹¤ë¡¢¤Ç¤·¤¿¤¬Â¾¤Ë¤â¿§¡¹»ØÄ꤬¤¢¤ê¤Þ¤¹¡£¤â¤·¤«¤·¤Æ¤è¤¯»È¤ï¤ì¤ë¤Î¤Ï PROPAGATION_MANDATORY¤Ç¤·¤ç¤¦¤«¡£¤³¤ì¤Ï¡¢¤¹¤Ç¤Ë³«»Ï¤µ¤ì¤Æ¤Ê¤«¤Ã¤¿¤éÎã³°¡¢¤È¤¤¤¦¤â¤Î¤Ç¤¹¡£DAO¤È¤«¤ò¤¢¤ä¤Þ¤Ã¤Æ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó³«»Ï¤·¤Ê¤¤¤Þ¤Þ¸Æ¤Ó½Ð¤·¤¿¤ê¤·¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¾ì¹ç¤Ê¤É¤Ë»È¤¨¤ë¤«¤Ê¡£¡£ ¤ä¤Ã¤Æ¤ß¤Þ¤¹¡£Àè¤Îxml¤Î»ØÄê¤Ë <property name="transactionAttributes">
<props> ¢POJO¤Î¥á¥½¥Ã¥É¤ËÂФ·¤Æ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤ÎÀßÄê¤òµ½Ò
<prop key="*">PROPAGATION_REQUIRED</prop>
<prop key="create">PROPAGATION_MANDATORY</prop>
¢¬create¤È¤¤¤¦¥á¥½¥Ã¥É¤À¤±¤Ï¡¢PROPAGATION_MANDATORY¤Ë¤¹¤ë
</props>
</property>
¤òÄɲ䷤Ƥä¤Ã¤Æ¤ß¤Þ¤¹¡£ Exception in thread "main" org.springframework.transaction.IllegalTransactionStateException:
Transaction propagation 'mandatory' but no existing transaction found
¤È¤¤¤¦Îã³°¤¬¥¹¥í¡¼¤µ¤ì¤Þ¤·¤¿¡£ ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó»ØÄê¤ò¤·¤Ê¤¤¾ì¹ç¤Ï¡¢¡¢¡© †ºÇ¸å¤Ë <property name="transactionAttributes">
<props>
</props>
</property>
¤Ê¤É¤È¤·¤Æ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó»ØÄê¤ò¤·¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¤É¤¦¤Ê¤ë¤Î¤Ç¤·¤ç¤¦¤«¡£¼Â¹Ô·ë²ÌÇÛ²¼¤ÎÄ̤ê¤Ç¤¹¡£ nu.mine.kino.bl.UserBL - create(UserAttr) - start org.springframework.orm.hibernate3.SessionFactoryUtils - Opening Hibernate Session -----------------------------onSave -----------------------------preFlush Hibernate: insert into MKINO.USER_ATTR (NAME, USERID) values (?, ?) -----------------------------postFlush org.springframework.orm.hibernate3.SessionFactoryUtils - Closing Hibernate Session nu.mine.kino.bl.UserBL - create(UserAttr) - end Åö¤¿¤êÁ°¤Ç¤¹¤¬¡¢¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬³«»Ï¤µ¤ì¤Ê¤¤¤Ç½èÍý¤¬¤Ê¤µ¤ì¤Æ¤Þ¤¹¡£Hibernate¤Î¥»¥Ã¥·¥ç¥ó¤Ï³«¤¤¤ÆÊĤ¸¤Æ¤ò¤Á¤ã¤ó¤È¤ä¤Ã¤Æ¤¯¤ì¤Æ¤Þ¤¹¤Í¡£ ´ØÏ¢¾ðÊó †¤³¤Îµ»ö¤Ï ¸½ºß¤Î¥¢¥¯¥»¥¹:28772 |