사용자 도구

사이트 도구


java:hibernate:test

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:hibernate:test [2016/09/18 15:45]
kwon37xi
java:hibernate:test [2016/09/24 15:11] (현재)
kwon37xi
줄 26: 줄 26:
 } }
 </code> </code>
 +
 +===== Hibernate 4.2 미만 Spock Spec 기본 뼈대 =====
 +<code groovy>
 +/**
 + * Hibernate/JPA testing specification.
 + */
 +abstract class AbstractHibernateSessionSpec extends Specification {
 +
 +    Configuration configuration
 +
 +    SessionFactory sf
 +
 +    Session session
 +
 +    void setup() {
 +        configuration = new Configuration();
 +
 +        configuration.addAnnotatedClass(Article)
 +
 +        configuration.setProperty("hibernate.show_sql", "false")
 +        configuration.setProperty("hibernate.format_sql", "true")
 +        configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect")
 +        configuration.setProperty("hibernate.connection.driver_class", "org.h2.Driver")
 +        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 설정.
 +        // 4.x 끼리도 버전마다 조금씩 달라질 수 있다.
 +        def srBuilder = new ServiceRegistryBuilder().applySettings(configuration.getProperties())
 +        def serviceRegistry = srBuilder.buildServiceRegistry()
 +
 +        sf = configuration.buildSessionFactory(serviceRegistry);
 +
 +        session = sf.openSession()
 +    }
 +
 +    void cleanup() {
 +        session.close()
 +        sf.close()
 +    }
 +}
 +
 +// 테스트시 직접 Connection을 맺어 쿼리를 실행하고 검사하고 싶을 경우
 +session.doWork({ Connection con ->
 +    groovy.sql.Sql sql = new groovy.sql.Sql(con)
 +    // work with Sql object
 +} as Work)
 +</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.1474182945.txt.gz · 마지막으로 수정됨: 2016/09/18 15:45 저자 kwon37xi