简单实验(CRUD):
(1)编写domain层class文件:User.java
(2)编写数据访问接口:interface UserDao.java
(3)编写映射文件:User.hbm.xml
(4)编写数据库配置文件:hibernate.cfg.xml
(5)编写工具类:HibernateUtil.java
(6)实现接口UserDaoHibernateImpl.java
(7)编写测试类Main.java
(1)编写domain层class文件:User.java
/*
*@Author swxctx
*@time 2016年9月13日
*/
package com.sw.domain;
import java.util.Date;
public class User {
private int id;
private String name;
private Date birthday;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
(2)编写数据访问接口:interface UserDao.java
/*
*@Author swxctx
*@time 2016年9月13日
*/
package com.sw.dao;
import com.sw.domain.User;
public interface UserDao {
//数据访问接口
public void saveUser(User user);//保存对象
public User findUserByName(String name);//通过用名字查找
public User findUserById(int id);//通过id查找
public void updateUser(User user);//更新
public void remove(User user);//删除
}
(3)编写映射文件: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
package="com.sw.domain">
<class name="User" table="user">
<!-- 数据库表主键 column指定字段名 -->
<id name="id" column="id">
<generator class="native"/>
</id>
<!-- property为属性 -->
<property name="name" column="name"/>
<property name="birthday"/>
</class>
</hibernate-mapping>
(4)编写数据库配置文件: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>
<!-- 数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 所用数据库 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 数据库url -->
<property name="connection.url">jdbc:mysql:///hibernate</property>
<!-- 数据库用户名 -->
<property name="connection.username">root</property>
<!-- 用户密码 -->
<property name="connection.password">0707</property>
<!-- 更新、创建表 -->
<property name="hbm2ddl.auto">update</property>
<!-- 打印出sql语句 -->
<property name="show_sql">true</property>
<!-- 映射文件位置 -->
<mapping resource="com/sw/hibernate/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
(5)编写工具类:HibernateUtil.java
/*
*@Author swxctx
*@time 2016年9月13日
*/
package com.sw.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public final class HibernateUtil {
//hibernate工具类
private static SessionFactory sessionFactory;
private HibernateUtil(){
//私有构造方法
}
static{
Configuration cfg=new Configuration();
cfg.configure();//读取配置文件
sessionFactory=cfg.buildSessionFactory();//包含配置文件的所有配置信息
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static Session getSession(){
return sessionFactory.openSession();//获取session
}
}
(6)实现接口UserDaoHibernateImpl.java
/*
*@Author swxctx
*@time 2016年9月13日
*/
package com.sw.dao.impl;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import com.sw.dao.UserDao;
import com.sw.domain.User;
import com.sw.util.HibernateUtil;
public class UserDaoHibernateImpl implements UserDao {
@Override
public void saveUser(User user) {
// TODO Auto-generated method stub
Session s=null;
Transaction tx=null;//开启事务
try{
s=HibernateUtil.getSession();//获得session
tx=s.beginTransaction();
s.save(user);//删除
tx.commit();//提交
}finally{
if(s!=null){
s.close();
}
}
}
@Override
public User findUserByName(String name) {
// TODO Auto-generated method stub
Session s=null;
try{
s=HibernateUtil.getSession();//获得session
Criteria c=s.createCriteria(User.class);
//加入条件查询
c.add(Restrictions.eq("name", name));
User user=(User)c.uniqueResult();
return user;
}finally{
if(s!=null){
s.close();
}
}
}
@Override
public User findUserById(int id) {
// TODO Auto-generated method stub
Session s=null;
try{
s=HibernateUtil.getSession();//获得session
User user=(User)s.get(User.class, id);
return user;
}finally{
if(s!=null){
s.close();
}
}
}
@Override
public void updateUser(User user) {
// TODO Auto-generated method stub
Session s=null;
Transaction tx=null;//开启事务
try{
s=HibernateUtil.getSession();//获得session
tx=s.beginTransaction();
s.update(user);//删除
tx.commit();//提交
}finally{
if(s!=null){
s.close();
}
}
}
@Override
public void remove(User user) {
// TODO Auto-generated method stub
Session s=null;
Transaction tx=null;//开启事务
try{
s=HibernateUtil.getSession();//获得session
tx=s.beginTransaction();
s.delete(user);//删除
tx.commit();//提交
}finally{
if(s!=null){
s.close();
}
}
}
}
(7)编写测试类Main.java
/*
*@Author swxctx
*@time 2016年9月13日
*/
package com.sw.main;
import java.util.Date;
import com.sw.dao.UserDao;
import com.sw.dao.impl.UserDaoHibernateImpl;
import com.sw.domain.User;
public class Main {
public static void main(String[] args){
UserDao dao=new UserDaoHibernateImpl();
User user=new User();
//创建保存
user.setName("xc");
user.setBirthday(new Date()) ;
dao.saveUser(user);
//更新
user.setName("swxc");
dao.updateUser(user);
//查询
User u=dao.findUserByName(user.getName());
//删除
dao.remove(u);
}
}