사용자 도구

사이트 도구


java:hibernate:test

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:hibernate:test [2016/09/18 16:06]
kwon37xi
java:hibernate:test [2016/09/24 15:11] (현재)
kwon37xi
줄 27: 줄 27:
 </code> </code>
  
-===== Hibernate 4.2 미만 Spock Spec =====+===== Hibernate 4.2 미만 Spock Spec 기본 뼈대 =====
 <code groovy> <code groovy>
 /** /**
  * Hibernate/JPA testing specification.  * Hibernate/JPA testing specification.
  */  */
-abstract class AbstractUserTypeSpec extends Specification {+abstract class AbstractHibernateSessionSpec extends Specification {
  
-    Configuration configuration;+    Configuration configuration
  
-    SessionFactory sf;+    SessionFactory sf 
 + 
 +    Session session
  
     void setup() {     void setup() {
         configuration = new Configuration();         configuration = new Configuration();
  
 +        configuration.addAnnotatedClass(Article)
  
-        // configuration.addAnnotatedClass(ClassName) 형태로 @Entity들 추가 +        configuration.setProperty("hibernate.show_sql", "false") 
- +        configuration.setProperty("hibernate.format_sql", "true"
-        configuration.setProperty("hibernate.show_sql", "true"); +        configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect"
-        configuration.setProperty("hibernate.format_sql", "true")+        configuration.setProperty("hibernate.connection.driver_class", "org.h2.Driver"
-        configuration.setProperty("hibernate.hbm2ddl.auto", "update"); +        configuration.setProperty("hibernate.connection.url", "jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1"
-        configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect"); +        configuration.setProperty("hibernate.connection.username", "sa"
-        configuration.setProperty("hibernate.connection.driver_class", "org.h2.Driver"); +        configuration.setProperty("hibernate.hbm2ddl.auto", "create-drop")
-        configuration.setProperty("hibernate.connection.url", "jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1"); +
-        configuration.setProperty("hibernate.connection.username", "sa"); +
-        configuration.setProperty("hibernate.hbm2ddl.auto", "create-drop");+
  
         // hibernate 4.2.x 미만 의 ServiceRegistryBuilder 설정.         // hibernate 4.2.x 미만 의 ServiceRegistryBuilder 설정.
줄 59: 줄 59:
  
         sf = configuration.buildSessionFactory(serviceRegistry);         sf = configuration.buildSessionFactory(serviceRegistry);
 +
 +        session = sf.openSession()
     }     }
  
     void cleanup() {     void cleanup() {
 +        session.close()
         sf.close()         sf.close()
     }     }
 } }
 +
 +// 테스트시 직접 Connection을 맺어 쿼리를 실행하고 검사하고 싶을 경우
 +session.doWork({ Connection con ->
 +    groovy.sql.Sql sql = new groovy.sql.Sql(con)
 +    // work with Sql object
 +} as Work)
 </code> </code>
 +
 +===== Hibernate 5.2 / Java 8 Test with lambda =====
 +  * [[http://in.relation.to/2016/09/15/integration-tests-and-java-8-lambdas/|How to simplify JPA and Hibernate integration testing using Java 8 lambdas]]
 +  * ''hibernate-testing'' 의존성을 걸고 다음과 같이 테스트하면 ''EntityManager''나 ''Session'' 의 Life Cycle을 자동으로 관리하면서 테스트 할 수 있다.
 +
 +<code java>
 +import static org.hibernate.testing.transaction.TransactionUtil.*;
 +
 +doInJPA( this::entityManagerFactory, entityManager -> {
 +    entityManager.persist( item );
 +    assertTrue( entityManager.contains( item ) );
 +} );
 +
 +// or
 +doInHibernate( this::sessionFactory, session -> {
 +    session.persist( item );
 +    assertTrue( session.contains( item ) );
 +} );
 +</code>
 +
  
java/hibernate/test.1474184217.txt.gz · 마지막으로 수정됨: 2016/09/18 16:06 저자 kwon37xi