究竟該如何創建SessionFactory?(hibernate5.0.x以上版本)
試過目前幾乎所有看到的代碼。仍然報錯,都指向SessionFactory創建的這行。。
官方那個給的
package?test;
import?java.io.IOException;
import?org.hibernate.Session;
import?org.hibernate.SessionFactory;
import?org.hibernate.Transaction;
import?org.hibernate.boot.MetadataSources;
import?org.hibernate.boot.registry.StandardServiceRegistry;
import?org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import?org.hibernate.cfg.Configuration;
import?org.hibernate.service.ServiceRegistry;
import?org.junit.Test;
import?bean.Message;
public?class?MessageTest?{
????private?SessionFactory?sessionfactory;
????private?org.hibernate.Session?session;
????private?Transaction?transaction;
????
????
????@Test
????public?void?test()?throws?IOException?{
????????//?創建一個SessionFactory對象
????????SessionFactory?sessionFactory?=?null;
????????final?StandardServiceRegistry?registry?=?new?StandardServiceRegistryBuilder()
????????.configure().build();
????????try?{
????????sessionFactory?=?new?MetadataSources(registry).buildMetadata()
????????.buildSessionFactory();
????????}?catch?(Exception?e)?{
????????//?出現異常需要銷毀StandardServiceRegistry注冊表
????????StandardServiceRegistryBuilder.destroy(registry);
????????System.out.println("創建會化工廠失敗");
????????}
????????//2.創建一個Session對象
????????
????????org.hibernate.Session?session?=?sessionFactory.openSession();????????????
????????session.beginTransaction();
????????
????????
//????????Configuration?configuration?=?new?Configuration().configure();
//????????sessionfactory?=?new?Configuration().configure().buildSessionFactory();
//????????session?=?sessionfactory.getCurrentSession();
//????????transaction?=?session.beginTransaction();
????????
//????????Configuration?configuration?=?new?Configuration();
//????????SessionFactory?sf?=?configuration.buildSessionFactory();
//????????org.hibernate.Session?session?=?sf.openSession();
//????????Transaction?tx?=?session.beginTransaction();
//????????tx.begin();
????????
//????????ServiceRegistry?serviceRegistry?=?new?StandardServiceRegistryBuilder().configure().build();??
//????????SessionFactory?sessionFactory?=?new?MetadataSources(serviceRegistry)??
//????????????????.buildMetadata().buildSessionFactory();??
//????????org.hibernate.Session?session?=?sessionFactory.openSession();??
//????????Transaction?transaction?=?session.beginTransaction();
????
//??????????//?創建配置對象
//????????Configuration?configuration?=?new?Configuration().configure();
//????????//?創建服務注冊對象
//????????StandardServiceRegistryBuilder?serviceRegistry?=?new?StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
//????????//創建會話工廠對象
//????????SessionFactory?sessionFactory?=?new?MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();??
//?
//????????//創建會話對象
//????????session?=?sessionfactory.openSession();
//????????//開啟事務
//????????transaction?=?session.beginTransaction();
????????
????????Message?message?=?new?Message();
????????message.setId("1");
????????message.setCommand("我是命令");
????????message.setContent("呢榮");
????????message.setDescription("我是描述");
????????session.save(message);
????????session.getTransaction().commit();
????????session.close();
????}
}
2.版本2
package?test;
import?java.io.IOException;
import?org.hibernate.Session;
import?org.hibernate.SessionFactory;
import?org.hibernate.Transaction;
import?org.hibernate.boot.MetadataSources;
import?org.hibernate.boot.registry.StandardServiceRegistry;
import?org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import?org.hibernate.cfg.Configuration;
import?org.hibernate.service.ServiceRegistry;
import?org.junit.Test;
import?bean.Message;
public?class?MessageTest?{
????private?SessionFactory?sessionfactory;
????private?org.hibernate.Session?session;
????private?Transaction?transaction;
????
????
????@Test
????public?void?test()?throws?IOException?{
//????????//?創建一個SessionFactory對象
//????????SessionFactory?sessionFactory?=?null;
//????????final?StandardServiceRegistry?registry?=?new?StandardServiceRegistryBuilder()
//????????.configure().build();
//????????try?{
//????????sessionFactory?=?new?MetadataSources(registry).buildMetadata()
//????????.buildSessionFactory();
//????????}?catch?(Exception?e)?{
//????????//?出現異常需要銷毀StandardServiceRegistry注冊表
//????????StandardServiceRegistryBuilder.destroy(registry);
//????????System.out.println("創建會化工廠失敗");
//????????}
//????????//2.創建一個Session對象
//????????
//????????org.hibernate.Session?session?=?sessionFactory.openSession();????????????
//????????session.beginTransaction();
????????
????????
//????????Configuration?configuration?=?new?Configuration().configure();
//????????sessionfactory?=?new?Configuration().configure().buildSessionFactory();
//????????session?=?sessionfactory.getCurrentSession();
//????????transaction?=?session.beginTransaction();
????????
????????Configuration?configuration?=?new?Configuration();
????????SessionFactory?sf?=?configuration.buildSessionFactory();
????????org.hibernate.Session?session?=?sf.openSession();
????????Transaction?tx?=?session.beginTransaction();
????????tx.begin();
????????
//????????ServiceRegistry?serviceRegistry?=?new?StandardServiceRegistryBuilder().configure().build();??
//????????SessionFactory?sessionFactory?=?new?MetadataSources(serviceRegistry)??
//????????????????.buildMetadata().buildSessionFactory();??
//????????org.hibernate.Session?session?=?sessionFactory.openSession();??
//????????Transaction?transaction?=?session.beginTransaction();
????
//??????????//?創建配置對象
//????????Configuration?configuration?=?new?Configuration().configure();
//????????//?創建服務注冊對象
//????????StandardServiceRegistryBuilder?serviceRegistry?=?new?StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
//????????//創建會話工廠對象
//????????SessionFactory?sessionFactory?=?new?MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();??
//?
//????????//創建會話對象
//????????session?=?sessionfactory.openSession();
//????????//開啟事務
//????????transaction?=?session.beginTransaction();
????????
????????Message?message?=?new?Message();
????????message.setId("1");
????????message.setCommand("我是命令");
????????message.setContent("呢榮");
????????message.setDescription("我是描述");
????????session.save(message);
????????session.getTransaction().commit();
????????session.close();
????}
}
3.版本3
package?test;
import?java.io.IOException;
import?org.hibernate.Session;
import?org.hibernate.SessionFactory;
import?org.hibernate.Transaction;
import?org.hibernate.boot.MetadataSources;
import?org.hibernate.boot.registry.StandardServiceRegistry;
import?org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import?org.hibernate.cfg.Configuration;
import?org.hibernate.service.ServiceRegistry;
import?org.junit.Test;
import?bean.Message;
public?class?MessageTest?{
????private?SessionFactory?sessionfactory;
????private?org.hibernate.Session?session;
????private?Transaction?transaction;
????
????
????@Test
????public?void?test()?throws?IOException?{
//????????//?創建一個SessionFactory對象
//????????SessionFactory?sessionFactory?=?null;
//????????final?StandardServiceRegistry?registry?=?new?StandardServiceRegistryBuilder()
//????????.configure().build();
//????????try?{
//????????sessionFactory?=?new?MetadataSources(registry).buildMetadata()
//????????.buildSessionFactory();
//????????}?catch?(Exception?e)?{
//????????//?出現異常需要銷毀StandardServiceRegistry注冊表
//????????StandardServiceRegistryBuilder.destroy(registry);
//????????System.out.println("創建會化工廠失敗");
//????????}
//????????//2.創建一個Session對象
//????????
//????????org.hibernate.Session?session?=?sessionFactory.openSession();????????????
//????????session.beginTransaction();
????????
????????
//????????Configuration?configuration?=?new?Configuration().configure();
//????????sessionfactory?=?new?Configuration().configure().buildSessionFactory();
//????????session?=?sessionfactory.getCurrentSession();
//????????transaction?=?session.beginTransaction();
????????
//????????Configuration?configuration?=?new?Configuration();
//????????SessionFactory?sf?=?configuration.buildSessionFactory();
//????????org.hibernate.Session?session?=?sf.openSession();
//????????Transaction?tx?=?session.beginTransaction();
//????????tx.begin();
????????
????????ServiceRegistry?serviceRegistry?=?new?StandardServiceRegistryBuilder().configure().build();??
????????SessionFactory?sessionFactory?=?new?MetadataSources(serviceRegistry)??
????????????????.buildMetadata().buildSessionFactory();??
????????org.hibernate.Session?session?=?sessionFactory.openSession();??
????????Transaction?transaction?=?session.beginTransaction();
????
//??????????//?創建配置對象
//????????Configuration?configuration?=?new?Configuration().configure();
//????????//?創建服務注冊對象
//????????StandardServiceRegistryBuilder?serviceRegistry?=?new?StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
//????????//創建會話工廠對象
//????????SessionFactory?sessionFactory?=?new?MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();??
//?
//????????//創建會話對象
//????????session?=?sessionfactory.openSession();
//????????//開啟事務
//????????transaction?=?session.beginTransaction();
????????
????????Message?message?=?new?Message();
????????message.setId("1");
????????message.setCommand("我是命令");
????????message.setContent("呢榮");
????????message.setDescription("我是描述");
????????session.save(message);
????????session.getTransaction().commit();
????????session.close();
????}
}
2017-06-10
public?class?TestStudents?{ public?static?SessionFactory?getSessionFactory()?{ StandardServiceRegistryBuilder?builder?=?new?StandardServiceRegistryBuilder(); StandardServiceRegistry?registry?=?builder.configure().build(); SessionFactory?sessionFactory?=?new?MetadataSources(registry) .buildMetadata().buildSessionFactory(); System.out.println(sessionFactory); return?sessionFactory; } @Test public?void?testSaveStudents()??{ // Configuration?config?=?new?Configuration().configure(); SessionFactory?sessionFactory?=?null; final?StandardServiceRegistry?registry?=?new?StandardServiceRegistryBuilder() .configure()?//?configures?settings?from?hibernate.cfg.xml .build(); try?{ sessionFactory?=?new?MetadataSources(registry).buildMetadata() .buildSessionFactory(); }?catch?(Exception?e)?{ StandardServiceRegistryBuilder.destroy(registry); } } public?static?void?main(String[]?args)?{ SessionFactory?factory?=?getSessionFactory(); Session?session?=?factory.openSession(); session.getTransaction().begin(); Students?students?=?new?Students("s00000001",?"lisa",?"女",?new?Date(), "東莞"); session.save(students); session.getTransaction().commit(); session.close(); //?test(); } }2016-09-29
強烈好評好評好評
2016-09-20
package util;
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 bean.User;
public class HibernateUtil {
?? ?public static SessionFactory getSessionFactory() {
?? ??? ?
?? ??? ?StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder();
?? ??? ?
?? ??? ?StandardServiceRegistry registry = builder.configure().build();
?? ??? ?
?? ??? ?SessionFactory sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
?? ??? ?System.out.println(sessionFactory);
?? ??? ?return sessionFactory;
?? ?}
?? ?public static void test(){
?? ??? ?SessionFactory sessionFactory = null;
?? ??? ?final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
?? ??? ??? ??? ?.configure() // configures settings from hibernate.cfg.xml
?? ??? ??? ??? ?.build();
?? ??? ?try {
?? ??? ??? ?sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory();
?? ??? ?}
?? ??? ?catch (Exception e) {
?? ??? ??? ?StandardServiceRegistryBuilder.destroy( registry );
?? ??? ?}
?? ?}
?? ?public static void main(String[] args) {
?? ??? ?SessionFactory factory =? getSessionFactory();
?? ??? ?Session session = factory.openSession();
?? ??? ?session.getTransaction().begin();
?? ??? ?User user = new User();
?? ??? ?user.setId(10);
?? ??? ?user.setName("tanlei");
?? ??? ?user.setPassword("123456");
?? ??? ?user.setType("admin");
?? ??? ?session.save(user);
?? ??? ?session.getTransaction().commit();
?? ??? ?session.close();
?? ??? ?//test();
?? ?}
}
2016-09-18
import?java.util.Date; import?org.hibernate.Session; import?org.hibernate.SessionFactory; import?org.hibernate.Transaction; import?org.hibernate.boot.registry.StandardServiceRegistryBuilder; import?org.hibernate.cfg.Configuration; import?org.junit.After; import?org.junit.Test; import?HibernateTest.Address; import?HibernateTest.Student; public?class?TestSession?{ private?SessionFactory?sessionfactory; private?Session?session; private?Transaction?transaction;//事務 @Test public?void?testOpenSession(){ Configuration?config?=?new?Configuration().configure(); sessionfactory=?config.buildSessionFactory(); Session?session1?=?sessionfactory.openSession(); Session?session2?=?sessionfactory.openSession(); System.out.println(session1==session2);//false } @Test public?void?testGetCurrentSession(){ Configuration?config?=?new?Configuration().configure(); SessionFactory?sessionfactory?=?new??Configuration().configure().buildSessionFactory(new?StandardServiceRegistryBuilder().applySettings(config.getProperties()).build()); Session?session1?=?sessionfactory.getCurrentSession(); Session?session2?=?sessionfactory.getCurrentSession(); System.out.println(session1==session2);//true } }