【SSH三大框架】Hibernate基础第五篇:利用Hibernate完毕简单的CRUD操作
这里利用Hibernate操作数据库完毕简单的CRUD操作。
首先,我们须要先写一个javabean:
package cn.itcast.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;
} }
然后呢,写上它的映射文件: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="cn.itcast.domain"> <class name="User">
<id name="id">
<generator class="native"/>
</id>
<property name="name" unique="true" />
<property name="birthday" />
</class> </hibernate-mapping>
继续我们须要写出数据库的映射文件:hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!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="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/test
</property>
<property name="connection.username">sa</property>
<property name="connection.password">123456</property> <property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<mapping resource="cn/itcast/domain/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
当这些都完毕之后,我们须要的就是编写Dao层了。
首先。我们得实现Dao层的接口(interface):UserDao.java
package cn.itcast.dao; import cn.itcast.domain.User; public interface UserDao {
public void saveUser(User user); public User findUserByName(String name); public User findUserById(int id); public void updateUser(User user); public void remove(User user);
}
而且我们须要写一个简单的HinbernateUtil类来获得session:HibernateUtil.java
package cn.itcast.dao; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public final class HibernateUtil {
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();
}
}
接下来。我们就要写Dao层的实现了:UserDaoImpl.java
package cn.itcast.dao.impl; import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions; import cn.itcast.dao.HibernateUtil;
import cn.itcast.dao.UserDao;
import cn.itcast.domain.User; public class UserDaoImpl implements UserDao {
@Override
public void saveUser(User user) { //保存一个对象
Session s = null;
Transaction tx = null;
try{
s = HibernateUtil.getSession();
tx = s.beginTransaction();
s.save(user);
tx.commit();
}finally{
if(s!=null){
s.close();
}
} } @Override
public User findUserByName(String name) { //通过name查找一个对象
Session s = null;
try{
s = HibernateUtil.getSession();
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) { //通过id查找一个对象
Session s = null;
try{
s = HibernateUtil.getSession();
User user = (User) s.get(User.class, id);
return user;
}finally{
if(s!=null){
s.close();
}
}
} @Override
public void updateUser(User user) { //更新一个对象
Session s = null;
Transaction tx = null;
try{
s = HibernateUtil.getSession();
tx = s.beginTransaction();
s.update(user);
tx.commit();
}finally{
if(s!=null){
s.close();
}
} } @Override
public void remove(User user) { //删除一个对象
Session s = null;
Transaction tx = null;
try{
s = HibernateUtil.getSession();
tx = s.beginTransaction();
s.delete(user);
tx.commit();
}finally{
if(s!=null){
s.close();
}
}
} }
最后,我们编写一个測试类类验证是否成功:DaoTest.java
package cn.test; import java.util.Date; import cn.itcast.dao.UserDao;
import cn.itcast.dao.impl.UserDaoHibernateImpl;
import cn.itcast.domain.User; public class DaoTest { /**
* @param args
*/
public static void main(String[] args) {
UserDao dao = new UserDaoHibernateImpl();
User user = new User();
user.setName("name");
user.setBirthday(new Date());
dao.saveUser(user); user.setName("new name");
dao.updateUser(user); User u = dao.findUserByName(user.getName()); dao.remove(u); } }
【SSH三大框架】Hibernate基础第五篇:利用Hibernate完毕简单的CRUD操作的更多相关文章
- SSH三大框架的搭建整合(struts2+spring+hibernate)(转)
原文地址:http://blog.csdn.net/kyle0349/article/details/51751913 尊重原创,请访问原文地址 SSH说的上是javaweb经典框架,不能说100% ...
- SSH三大框架的搭建整合(struts2+spring+hibernate)
本文转载自:https://blog.csdn.net/kyle0349/article/details/51751913
- eclipse中SSH三大框架环境搭建<三>
相关链接: eclipse中SSH三大框架环境搭建<一> eclipse中SSH三大框架环境搭建<二> 引言:通过上两篇文章我们已经可以掌握struts2和spring的环境的 ...
- SSH三大框架整合案例
SSH三大框架的整合 SSH三个框架的知识点 一.Hibernate框架 1. Hibernate的核心配置文件 1.1 数据库信息.连接池配置 1.2 Hibernate信息 1.3 映射配置 ...
- SSH三大框架的整合
SSH三个框架的知识点 一.Hibernate框架 1. Hibernate的核心配置文件 1.1 数据库信息.连接池配置 1.2 Hibernate信息 1.3 映射配置 1.4 Hibernate ...
- ssh三大框架的认识
一.SSH三大框架的概述 ssh为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架. 集成SSH框架的系统从职责上分为四层:表示层.业务逻辑层 ...
- eclipse中SSH三大框架环境搭建<二>
通过上一篇博客我们可以轻松搭建strtus2的环境,接下来由我来继续介绍spring的环境搭建以及spring注入的简单使用 相关链接:eclipse中SSH三大k框架环境搭建<一> ec ...
- eclipse中SSH三大框架环境搭建<一>
这里先简单介绍一下我用的三大框架版本以及下载地址 相关链接:eclipse中SSH三大框架环境搭建<二> eclipse中SSH三大框架环境搭建<三> struts-2.3.3 ...
- SSH三大框架合辑的搭建步骤
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
随机推荐
- 【BZOJ 2806】 2806: [Ctsc2012]Cheat (SAM+二分+DP+单调队列)
2806: [Ctsc2012]Cheat Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 1262 Solved: 643 Description ...
- codevs 5294 挖地雷
5294 挖地雷 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 黄金 Gold 题目描述 Description 在一个地图上有N个地窖(N<=20),每个地窖中埋有一 ...
- BZOJ3669 NOI2014魔法森林
按a从小到大排序,然后按b建图. 每次只需要找1~n中最大的b加当前的a计算答案即可. 这里还有一个小操作就是化边为点,把一条边的边权看做一个点的点权然后多连两条边. By:大奕哥 #include& ...
- [BZOJ4888][TJOI2017]异或和(树状数组)
题目描述 在加里敦中学的小明最近爱上了数学竞赛,很多数学竞赛的题都是与序列的连续和相关的.所以对于一个序列,求出它们所有的连续和来说,小明觉得十分的简单.但今天小明遇到了一个序列和的难题,这个题目不仅 ...
- [CodeForces-440D]Berland Federalization
题目大意: 给你一棵树,你可以删掉一些边,使得分除去的子树中至少有一棵大小为k. 问最少删去多少边,以及删边的具体方案. 思路: 树形DP. f[i][j]表示以i为根,子树中去掉j个点最少要删边的数 ...
- 用C++/CLI搭建C++和C#之间的桥梁(三)—— 基本类型
数值类型 对于基本的数值类型,在C++/CLI中是可以直接映射为托管类型的数值的,可以同时应用于托管类型和非托管类型,编译器会将其自动转换. 基本类型 System命名空间中对应的类 注释/用法 bo ...
- VS2010 + IDA SDK 搭建IDA Plugin开发环境
http://www.h4ck.org.cn/2011/11/vs2010-idasdk6-2-ida-plugin-development/ 1. 执行菜单的File->New->Pro ...
- Spring SetFactoryBean实例
SetFactoryBean 类为开发者提供了一种可在 Spring bean 配置文件创建一个具体的Set集合(HashSet 和 TreeSet). 这里有一个 ListFactoryBean.例 ...
- windows10使用arcgis注意事项
平板电脑模式
- PHP:相对于C#,PHP中的个性化语法
背景 今天把PHP的基本语法结构熟悉了一下,包括:变量.类型.常量.运算符.字符串.作用域和函数等,本文列举一些我需要强化记忆的结构(和C#不同). 一些个性化的结构 foreach结构 <?p ...