Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库
一、环境准备
安装jdk(版本1.7以上),导入jar包,并且创建项目,如下图所示
二、核心代码如下
- span style="font-family:'Microsoft YaHei';">package com.util;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.cfg.Configuration;
- public class HibernateUtil {
- public HibernateUtil() {
- }
- private static String RESOURCE = "resource/hibernate.cfg.xml";
- private static SessionFactory sessionFactory = null;
- private static ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
- static {
- try {
- Configuration cfg = new Configuration().configure(RESOURCE);
- sessionFactory = cfg.buildSessionFactory();
- } catch (Exception e1) {
- e1.printStackTrace();
- throw new ExceptionInInitializerError("初始化hibernate错误,请检查配置文件或数据库");
- }
- }
- public static SessionFactory getSessionFactory() {
- return sessionFactory;
- }
- public static Session getSession() {
- // sessionTL的get()方法根据当前线程返回其对应的线程内部变量,
- // 也就是我们需要的Session,多线程情况下共享数据库链接是不安全的。
- // ThreadLocal保证了每个线程都有自己的Session。
- Session session = threadLocal.get();
- // 如果session为null,则打开一个新的session
- if (session == null) {
- session = (sessionFactory != null) ? sessionFactory.openSession() : null;
- threadLocal.set(session);
- }
- return session;
- }
- public static void closeSession() {
- Session session = (Session) threadLocal.get();
- threadLocal.set(null);
- if (session != null) {
- session.close();
- }
- }
- }</span>
下面建立测试类
- <span style="font-family:'Microsoft YaHei';">package com.test;
- import org.hibernate.Session;
- import com.entity.User;
- import com.util.HibernateUtil;
- public class Main {
- public static void main(String[] args) {
- Session session = HibernateUtil.getSession();
- session.beginTransaction();
- User user = new User();
- user.setUsername("Jerry");
- user.setPassword("Hdc09130415");
- user.setAge(20);
- session.save(user);
- session.getTransaction().commit();
- HibernateUtil.getSession().close();
- }
- }</span>
测试:运行结果
- <span style="font-family:'Microsoft YaHei';">log4j:WARN No appenders could be found for logger (org.jboss.logging).
- log4j:WARN Please initialize the log4j system properly.
- log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
- Hibernate: select max(id) from perfack
- Hibernate: insert into perfack (username, password, age, id) values (?, ?, ?, ?)</span>