在 2 Hibernate:入門簡介 中已經介紹瞭如何使用 hibernate 本地 API,根據 Hibernate 官方文檔,對單元測試代碼進行優化。java
package hibernate; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.boot.MetadataSources; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test; public class NativeApiIllustrationTest { private SessionFactory sessionFactory; @Before public void setUp() throws Exception { final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build(); try { sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory(); } catch (Exception e) { // 若是構建SessionFactory出現異常,須要手動銷燬StandardServiceRegistry StandardServiceRegistryBuilder.destroy(registry); } } @After public void tearDown() throws Exception { if (null != sessionFactory) { sessionFactory.close(); } } @Test public void test() throws ParseException { Session session = sessionFactory.openSession(); session.beginTransaction(); session.save(new Person("tom", "Tommy", new SimpleDateFormat("yyyy-MM-dd").parse("1985-01-01"))); session.save(new Person("mix", "Mercy", new SimpleDateFormat("yyyy-MM-dd").parse("1990-10-01"))); session.getTransaction().commit(); session.close(); session = sessionFactory.openSession(); session.beginTransaction(); @SuppressWarnings("unchecked") List<Person> result = session.createQuery(" FROM Person").list(); for (Person person : result) { System.out.println(person); } session.getTransaction().commit(); session.close(); } }
打印結果:mysql
Hibernate: insert into PERSON (ACCOUNT, NAME, BIRTH) values (?, ?, ?) Hibernate: insert into PERSON (ACCOUNT, NAME, BIRTH) values (?, ?, ?) 六月 24, 2017 4:25:44 下午 org.hibernate.hql.internal.QueryTranslatorFactoryInitiator initiateService INFO: HHH000397: Using ASTQueryTranslatorFactory Hibernate: select person0_.ID as ID1_0_, person0_.ACCOUNT as ACCOUNT2_0_, person0_.NAME as NAME3_0_, person0_.BIRTH as BIRTH4_0_ from PERSON person0_ Person [id=1, account=tom, name=Tommy, birth=1985-01-01 00:00:00.0] Person [id=2, account=mix, name=Mercy, birth=1990-10-01 00:00:00.0] 六月 24, 2017 4:25:44 下午 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop INFO: HHH10001008: Cleaning up connection pool [jdbc:mysql://localhost:3306/test]