导入相关jar包:
实体User.java
package com.dx.pojo;
public class User {
private Integer userId;
private String name;
private String pass;
public User(){}
public User(String name,String pass){
this.name = name;
this.pass = pass;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
@Override
public String toString() {
return "User [userId=" + userId + ", name=" + name + ", pass=" + pass
+ "]";
}
}
对应表user
配置文件hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 配置数据库信息 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="hibernate.connection.password">123456</property>
<!-- 其他配置 -->
<!-- 运行时,控制台显示sql语句 -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">false</property>
<!--
create:先删除,再创建
update:如果表不存在就创建,不一样就更新,一样就什么都不做。
create-drop:初始化时创建表,SessionFactory执行close()时删除表。
validate:验证表结构是否一致,如果不一致,就抛异常。
-->
<property name="hbm2ddl.auto">update</property>
<!-- 导入映射文件 -->
<mapping resource="com/dx/pojo/user.hbm.xml"/>
</session-factory>
</hibernate-configuration>
单个实体对应的映射文件(user.hbm.xml)
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.dx.pojo.User" table="user">
<id name="userId" column="t_id" type="java.lang.Integer">
<generator class="identity"/>
</id>
<property name="name" type="java.lang.String" column="t_name"/>
<property name="pass" type="java.lang.String" column="t_pass"/>
</class>
</hibernate-mapping>
工具类HibernateSessionFactory.java
package com.dx.util;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
public class HibernateSessionFactory {
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static Configuration configuration = new Configuration();
private static org.hibernate.SessionFactory sessionFactory;
private static String configFile = CONFIG_FILE_LOCATION;
static {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateSessionFactory() {
}
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession() : null;
threadLocal.set(session);
}
return session;
}
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory = null;
}
public static Configuration getConfiguration() {
return configuration;
}
}
测试:Test.java
package com.dx.test;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import com.dx.pojo.User;
import com.dx.util.HibernateSessionFactory;
public class Test {
public static void main(String[] args) {
findAll();
//baocun();
}
//查找所有记录
public static void findAll(){
String hql = "from User";
Query query = HibernateSessionFactory.getSession().createQuery(hql);
List<User> list = query.list();
for(User g:list){
System.out.println(g);
}
}
//保存
public static void baocun(){
User good = new User("zhangsan","12324");
Session session = HibernateSessionFactory.getSession();
//开启事务
org.hibernate.Transaction t = session.beginTransaction();
session.save(good);
t.commit();
}
}