一、Hibernate导入相关的包
参考:http://blog.csdn.net/tunni/article/details/54982160
这些包包括相应数据库驱动、hibernate.zip下lib目录下的jar包,其中必须包是required目录下的.jar
二、在项目classpath(类路径,即src目录下)配置hibernate.cfg.xml,并且配置数据库连接
hibernate.cfg.xml配置文件
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory > <!-- mysql数据库驱动 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- mysql数据库名称 --> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_db</property> <!-- 数据库的登陆用户名 --> <property name="hibernate.connection.username">root</property> <!-- 数据库的登陆密码 --> <property name="hibernate.connection.password">admin</property> <!-- 方言:为每一种数据库提供适配器,方便转换 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 建议配置,方便在日志中查看sql语句--> <propertynamepropertyname="hibernate.show_sql">true</property> <propertyname="hibernate.format_sql">true</property> <!--配置类与表的映射文件 --> <mapping resource="com/hibernate/User.hbm.xml"/></session-factory>
</hibernate-configuration>
com.hibernate.User类
package com.hibernate;public class User { private String id; private String username; private String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String userName) { this.username = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }
}
User.hbm.xml配置文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- 类与数据库的表对应 --> <class name="com.hibernate.User" table="user"> <!-- 主键名 --> <id name="id" column="id"> <!-- 生成策略 --> <generator class="uuid"/> </id> <!-- 其他类属性与表字段 --> <property name="username" column="username"/> <property name="password"/> </class>
</hibernate-mapping>
hibernate访问工具类
package hibernate;
/*** hibernate工具* @author maokun* */
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;public class HibernateUtil {private static final SessionFactory sessionFactory;static{try{ //配置文件放在classpath路径,即src目录下//如果hibernate的配置文件目录为hibernate.cfg.xml,则//Configuration config = new Configuration().configure();//或Configuration config = new Configuration().configure("hibernate.cfg.xml");//或Configuration config = new Configuration().configure("hibernate.cfg.xml"); //配置其他路径如下://Configuration config = new Configuration().configure("hibernate/hibernate.cfg.xml");Configuration config = new Configuration().configure("/hibernate/hibernate.cfg.xml");sessionFactory = config.buildSessionFactory();}catch(Throwable e){throw new ExceptionInInitializerError(e);}}public static final ThreadLocal session = new ThreadLocal();public static Session currentSession() throws HibernateException{Session s = (Session)session.get();//如果线程没有session,打开新的sessionif(s == null || !s.isOpen()){s = sessionFactory.openSession();session.set(s);}return s;}public static void closeSession() throws HibernateException{Session s = (Session)session.get();session.set(null);if(s != null)s.close();}}
三、第一个hibernate例子
先创建hibernate_db数据库,接着创建user表包含id,username,password。
Test类
package hibernate;import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;import com.hibernate.User;public class Test {public static void main(String[] args) {User user =new User();user.setUsername("name");user.setPassword("pass");Session session = HibernateUtil.currentSession();//生成Session实例Transaction tx = session.beginTransaction();try{session.save(user); //保存持久类对象tx.commit(); //提交到数据库session.close(); }catch(HibernateException e){e.printStackTrace();tx.rollback();}}
}