搭建一个hibernate框架的步骤
- 安装jdk 我选择安装jdk 1.8。 安装之后配置环境变量JAVA_HOME PATH
- 下载hibernate的jar包,这里我选择了hibernate 5.2.10
- 下载并安装mysql,idea。
- 新建一个java项目,在idea中选择Java->Web Application->Hibernate 下一步后点击Finish建立项目
- 建立数据库
create table 'user'(
id int auto_increament not null,
username varchar(20),
password varchar(20),
primary key(id)
)
6.连接数据库,自动生成实体类
实体类User如下:
package com.dixin.po;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
/**
* Created by admin on 2018/5/8.
*/
@Entity
public class User {
private int id;
private String username;
private String password;
@Id
@Column(name = "id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Basic
@Column(name = "username")
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Basic
@Column(name = "password")
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
if (id != user.id) return false;
if (username != null ? !username.equals(user.username) : user.username != null) return false;
if (password != null ? !password.equals(user.password) : user.password != null) return false;
return true;
}
@Override
public int hashCode() {
int result = id;
result = 31 * result + (username != null ? username.hashCode() : 0);
result = 31 * result + (password != null ? password.hashCode() : 0);
return result;
}
}
实体类与数据库对应关系文件 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.dixin.po.User" table="user" schema="project1">
<id name="id" column="id">
<generator class="native"/>
<!--主键生成方式按照数据库里来-->
</id>
<property name="username" column="username"/>
<property name="password" column="password"/>
</class>
</hibernate-mapping>
6.配置hibernate.cfg.xml文件
这里我只是想尽量表示全一些,实际中可以因需要删减
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="connection.url">jdbc:mysql://localhost:3306/project1?useUnicode=true&characterEncoding=utf-8</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!--配置c3p0连接池-->
<property name="hibernate.cache.provider_class">
org.hibernate.c3p0.internal.C3P0ConnectionProvider
</property>
<!--二级缓存EHCathe的Provider类-->
<property name="hibernate.cache.region.factory_class">
org.hibernate.cache.ehcache.EhCacheRegionFactory
</property>
<!--启用查询缓存,以缓存使用find(),list(),Iterator()等方法获得的查询结果集-->
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.provider_configuration_file_resource_path">clssspath:ehcache.xml</property>
<property name="hibernate.cache.use_second_level_cache">true</property>
<mapping class="com.dixin.po.User"/>
<mapping resource="com/dixin/po/User.hbm.xml"/>
<!-- DB schema will be updated if needed -->
<!-- <property name="hbm2ddl.auto">update</property> -->
</session-factory>
</hibernate-configuration>
使用Hibernate的7个步骤
- 读取配置文件
- 创建SessionFactory
- 打开Session
- 开始一个事务
- 持久化操作
- 提交事务
- 关闭Session
具体代码如下:
package com.dixin.dao;
import com.dixin.po.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
/**
* Created by admin on 2018/5/8.
*/
public class UserDao {
public static void main(String[] args) {
Configuration configuration=new Configuration().configure();//1读取配置文件
SessionFactory sessionFactory=configuration.buildSessionFactory();//2创建SessionFactory
Session session=sessionFactory.openSession();//3打开Session
Transaction transaction=null;
try {
transaction=session.beginTransaction();//4开始一个事务
//5持久化操作
User user=new User();
user.setUsername("张三");
user.setPassword("123321");
session.save(user);
transaction.commit();//6提交事务
} catch (Exception e) {
if(transaction!=null) {
transaction.rollback();
}
e.printStackTrace();
} finally {
if(session!=null) {
session.close();//7关闭Session
}
}
}
}