究竟該如何創(chuàng)建SessionFactory?(hibernate5.0.x以上版本)
試過(guò)目前幾乎所有看到的代碼。仍然報(bào)錯(cuò),都指向SessionFactory創(chuàng)建的這行。。
官方那個(gè)給的
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?{ ????????//?創(chuàng)建一個(gè)SessionFactory對(duì)象 ????????SessionFactory?sessionFactory?=?null; ????????final?StandardServiceRegistry?registry?=?new?StandardServiceRegistryBuilder() ????????.configure().build(); ????????try?{ ????????sessionFactory?=?new?MetadataSources(registry).buildMetadata() ????????.buildSessionFactory(); ????????}?catch?(Exception?e)?{ ????????//?出現(xiàn)異常需要銷毀StandardServiceRegistry注冊(cè)表 ????????StandardServiceRegistryBuilder.destroy(registry); ????????System.out.println("創(chuàng)建會(huì)化工廠失敗"); ????????} ????????//2.創(chuàng)建一個(gè)Session對(duì)象 ???????? ????????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(); ???? //??????????//?創(chuàng)建配置對(duì)象 //????????Configuration?configuration?=?new?Configuration().configure(); //????????//?創(chuàng)建服務(wù)注冊(cè)對(duì)象 //????????StandardServiceRegistryBuilder?serviceRegistry?=?new?StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); //????????//創(chuàng)建會(huì)話工廠對(duì)象 //????????SessionFactory?sessionFactory?=?new?MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();?? //? //????????//創(chuàng)建會(huì)話對(duì)象 //????????session?=?sessionfactory.openSession(); //????????//開啟事務(wù) //????????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?{ //????????//?創(chuàng)建一個(gè)SessionFactory對(duì)象 //????????SessionFactory?sessionFactory?=?null; //????????final?StandardServiceRegistry?registry?=?new?StandardServiceRegistryBuilder() //????????.configure().build(); //????????try?{ //????????sessionFactory?=?new?MetadataSources(registry).buildMetadata() //????????.buildSessionFactory(); //????????}?catch?(Exception?e)?{ //????????//?出現(xiàn)異常需要銷毀StandardServiceRegistry注冊(cè)表 //????????StandardServiceRegistryBuilder.destroy(registry); //????????System.out.println("創(chuàng)建會(huì)化工廠失敗"); //????????} //????????//2.創(chuàng)建一個(gè)Session對(duì)象 //???????? //????????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(); ???? //??????????//?創(chuàng)建配置對(duì)象 //????????Configuration?configuration?=?new?Configuration().configure(); //????????//?創(chuàng)建服務(wù)注冊(cè)對(duì)象 //????????StandardServiceRegistryBuilder?serviceRegistry?=?new?StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); //????????//創(chuàng)建會(huì)話工廠對(duì)象 //????????SessionFactory?sessionFactory?=?new?MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();?? //? //????????//創(chuàng)建會(huì)話對(duì)象 //????????session?=?sessionfactory.openSession(); //????????//開啟事務(wù) //????????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?{ //????????//?創(chuàng)建一個(gè)SessionFactory對(duì)象 //????????SessionFactory?sessionFactory?=?null; //????????final?StandardServiceRegistry?registry?=?new?StandardServiceRegistryBuilder() //????????.configure().build(); //????????try?{ //????????sessionFactory?=?new?MetadataSources(registry).buildMetadata() //????????.buildSessionFactory(); //????????}?catch?(Exception?e)?{ //????????//?出現(xiàn)異常需要銷毀StandardServiceRegistry注冊(cè)表 //????????StandardServiceRegistryBuilder.destroy(registry); //????????System.out.println("創(chuàng)建會(huì)化工廠失敗"); //????????} //????????//2.創(chuàng)建一個(gè)Session對(duì)象 //???????? //????????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(); ???? //??????????//?創(chuàng)建配置對(duì)象 //????????Configuration?configuration?=?new?Configuration().configure(); //????????//?創(chuàng)建服務(wù)注冊(cè)對(duì)象 //????????StandardServiceRegistryBuilder?serviceRegistry?=?new?StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); //????????//創(chuàng)建會(huì)話工廠對(duì)象 //????????SessionFactory?sessionFactory?=?new?MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();?? //? //????????//創(chuàng)建會(huì)話對(duì)象 //????????session?=?sessionfactory.openSession(); //????????//開啟事務(wù) //????????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
2016-09-29
強(qiáng)烈好評(píng)好評(píng)好評(píng)
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