准备工作做好了,开始Hibernate:

1:建立包:package:dao、model、service、util包;

2:开始model实体类Student:id,sname生成getter/setter;

Java代码

     package model;  

     public class Student {
private int id;
private String name; public int getId() {
return id;
}
private void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

3:在Hibernate源码下/project/搜索 *.xml复制以下文件:

hibernate.cfg.xml-->src下;

*.hbm.xml-->model下;

4:配置hibernate.cfg.xml

     <session-factory>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibnie</property>
<property name="connection.username">root</property>
<property name="connection.password">1234</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property> <mapping resource="model/Student.hbm.xml"/>
</session-factory>

5:配置Student.hbm.xml

     <hibernate-mapping package="model">
<class name="Student" table="s" lazy="false">
<id name="id" type="integer" column="sid">
<generator class="identity"/>
</id>
<property name="name" type="string" column="sname" />
</class>
</hibernate-mapping>

6:加入JUnit4 jar包,加入path;

7:写util.HibernateUtil

     package util;  

     import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtil {
private static final SessionFactory sessionFactory=buildSessionFactory(); /** init sessionFactory */
private static SessionFactory buildSessionFactory() {
SessionFactory sessionFactory=null;
try{
sessionFactory=new Configuration().configure().buildSessionFactory();
}catch(Throwable te){
System.err.println("init sessionFactory Error:"+te);
te.printStackTrace();
}
return sessionFactory;
} /** get session */
public static Session getSession(){
Session stion=sessionFactory.openSession();
return stion;
} }

8:测试HIbernateUtil

            @Test
public void testGetSession() {
Session stion=HibernateUtil.getSession();
System.out.println(stion);
}

9:dao层-->StudentDao

     package dao;  

     import java.util.Iterator;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import util.HibernateUtil;
import model.Student; public class StudentDao {
/** insert; */
public void addStudent(Student stu){
Session session=HibernateUtil.getSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
session.save(stu);
tx.commit();
}catch(HibernateException he){
tx.rollback();
he.printStackTrace();
}finally{
session.close();
}
}
/** select; */
public Student getStudent(int sid){
Session session=HibernateUtil.getSession();
Transaction tx=null;
Student stu=null;
try{
tx=session.beginTransaction();
stu=(Student)session.load(Student.class,new Integer(sid));
// stu=(Student)session.get(Student.class,new Integer(sid));
tx.commit();
}catch(HibernateException he){
tx.rollback();
he.printStackTrace();
}finally{
session.close();
}
return stu;
}
/** update */
public void updateStudent(String oldName,String newName){
Session session=HibernateUtil.getSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
Query q=session.createQuery("from Student s where s.name= ?");
q.setParameter(0, oldName);
Iterator<Student> it=q.list().iterator();
while(it.hasNext()){
Student s=it.next();
s.setName(newName);
session.update(s);
}
tx.commit();
session.close();
}catch(HibernateException he){
tx.rollback();
he.printStackTrace();
}
}
/** delete */
public void deleteStudent(String str){
Session session=HibernateUtil.getSession();
Transaction tx=null;
try {
tx=session.beginTransaction();
/* 1.Criteria查询; */
Criteria criter=session.createCriteria(Student.class).add(Restrictions.like("name","%"+str+"%"));
Iterator<Student> it=criter.list().iterator();
/* 2.Query查询
Query q=session.createQuery("from Student as s where s.name like ?");
q.setParameter(0, "%"+str+"%");
Iterator<Student> it=q.list().iterator(); */
/* 3.Native sql查询 表名和表中的列名而不是实体类的类名和属性名了
SQLQuery sqlq=session.createSQLQuery("SELECT * FROM s WHERE sname like ?").addEntity(Student.class);
sqlq.setParameter(0, "%"+str+"%");
Iterator<Student> it=sqlq.list().iterator(); */
while(it.hasNext()){
session.delete(it.next());
}
tx.commit();
} catch (HibernateException he) {
tx.rollback();
he.printStackTrace();
} finally {
session.close();
}
}
}

10.业务层-->service:StudentManager:

     package service;  

     import dao.StudentDao;
import model.Student; public class StudentManager {
StudentDao dao=new StudentDao();
public void save(Student stu){
dao.addStudent(stu);
}
public Student get(int id){
return dao.getStudent(id);
}
public void update(String oname,String nname){
dao.updateStudent(oname, nname);
}
public void delete(String name){
dao.deleteStudent(name);
}
}

11.测试业务逻辑:StudentManagerTest

     package service;  

     import model.Student;
import org.junit.Before;
import org.junit.Test; public class StudentManagerTest {
StudentManager manager;
@Before
public void init(){
manager=new StudentManager();
}
@Test public void testSave() {
Student stu1=new Student();
stu1.setName("John woo");
manager.save(stu1);
}
@Test public void testGet(){
Student stu=manager.get(12);
System.out.println(stu.getName());
}
@Test public void testUpdate(){
manager.update("Mary","Nie");
}
@Test public void testDelete(){
manager.delete("ie");
}
}

个基本hibernate就完成了,包括基本的CRUD还有3种查询方式。

备注:lib下的jar包:

     antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate3.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
junit-4.9b1.jar
mysql6.jar
slf4j-api-1.6.1.jar
slf4j-simple-1.6.1.jar

注意:

1.原作者:学不可以已

2.我做完之后发现一个问题;就是update不成功,不知道是什么原因

3.junit是进行单元测试用到的,可以去我的微博搜素相关资料,输入关键字“junit”,输入下图中的“查询框中”

4:附带我的代码,跟这文章的上一篇章0中分享的我自己修改的代码是一样的。链接:http://pan.baidu.com/s/1nt65KgD 密码:6uac

hibernate篇章六--demo(Hibernate之第1解之-hibernate_demo_1)的更多相关文章

  1. hibernate篇章六--demo(0.准备工作)

    这个demo是学习自:学习不可已 这个章节我们先来说准备工作:Hibernate之第〇解之准备工作 首先: 1.新建java project--hibernate_demo_1: 2.新建src fo ...

  2. 【SSH系列】-- hibernate基本原理&&入门demo

        什么是hibernate?      hibernate在英文中是冬眠的意思,当冬季来临,世界万物开始准备冬眠,但是程序猿这种动物好像不冬眠,因为需求变了,要改bug,冬眠,对于对象来说就是持 ...

  3. 攻城狮在路上(壹) Hibernate(十六)--- Hibernate声明数据库事务

    一.数据库事务的概念: 数据库的ACID特征:Atomic.Consistency.Isolation.Durability.原子性.一致性.隔离性.持久性.不同的隔离级别引发的不同问题. 事务的AC ...

  4. 第六章 Hibernate关联映射

    第六章 hibernate关联映射一.本章知识点分为2部分:1.关联关系:单向多对一关联关系,双向一对多关联关系(含一对多关联关系),多对多关联关系2.延迟加载:类级别加载策略,一对多加载策略,多对一 ...

  5. hibernate(六)一对一映射

    关系映射是指对象之间的关系,并不是指数据库的关系,关系映射是解决当对象处于以下关系之一时,数据库表该如何映射的问题 (一)一对一单向外键关联 1.注解方式配置 创建一个Husband类和Wife类 H ...

  6. hibernate篇章三-- hibernate配置文件hibernate.cfg.xml的详细解释

    <!--标准的XML文件的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML文件的编码方式--> <?xml version='1.0' ...

  7. hibernate篇章二--成就搭建hibernate框架

    在网上的资料很多,但是成功搭建一个Hibernate框架的很少,下面我将用一个简单的例子成功搭建一个Hibernate框架给大伙瞧瞧 该链接中有源代码和数据库,例子很简单,只是往数据库中的person ...

  8. (六)Hibernate 映射类型

    所有项目导入对应的hibernate的jar包.mysql的jar包和添加每次都需要用到的HibernateUtil.java 第一节:基本类型映射 例子: hibernate.cfg.xml < ...

  9. Hibernate第六篇【多对多映射、一对一映射】

    前言 前面已经讲解了一对多和多对一的映射是怎么配置了,也讲解了inverse和cascade属性对关联关系的影响,本博文讲解多对多的映射和一对一的映射! 多对多映射 需求:一个项目由多个员工开发,一个 ...

随机推荐

  1. PHP位运算 详细说明

    在实际应用中可以做用户权限的应用我这里说到的权限管理办法是一个普遍采用的方法,主要是使用到”位运行符”操作,& 位与运算符.| 位或运行符.参与运算的如果是10进制数,则会被转换至2进制数参与 ...

  2. CSS3中动画属性transform、transition 和 animation

    CSS3中和动画有关的属性有三个 transform.transition 和 animation.下面来一一说明:        transform   从字面来看transform的释义为改变,使 ...

  3. MySql配置参数很全的Mysql配置参数说明

    MySql配置参数 很全的Mysql配置参数说明 1. back_log 指定MySQL可能的连接数量.当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花些时间(尽管很 ...

  4. HDOJ 1863

    #include<stdio.h> #include<string.h> int father[105],depth[105]; int dist[105],map[101][ ...

  5. HDU2520 我是菜鸟,我怕谁

    http://acm.hdu.edu.cn/showproblem.php?pid=2520 我是菜鸟,我怕谁 Time Limit: 2000/1000 MS (Java/Others) Memor ...

  6. [liu yanling]测试流程

    测试流程 1.制定测试计划 2.编辑测试用例 3.执行测试用例 4.发现并提交BUG 5.开发组修正BUG 6.对已修正BUG进行返测 7.修正完成的BUG将状态置为已关闭,未正确修正的BUG重新激活

  7. QT-opencv小结

    gcc –v 4.5 cmake编译opencv 2.4.4   ox00000005错误(gcc版本不对) gcc –v4.5  <----------qt 推荐打包,而不是static

  8. gcc编译选项的循环重复查找依赖库等命令

    link时,若liba.a依赖libb.a,若这样写 -lb -la,则链接通不过,gcc有个选项:-Xlinker ,可以让gcc在链接时反复查找依赖库,用法 : gcc -shared -o li ...

  9. Storm与Hadoop的角色和组件比较

    Storm与Hadoop的角色和组件比较 Storm 集群和 Hadoop 集群表面上看很类似.但是 Hadoop 上运行的是 MapReduce 作业,而在 Storm 上运行的是拓扑 Topolo ...

  10. Oracle Tnsping慢

    http://www.linuxidc.com/Linux/2014-02/96167.htm http://www.askmaclean.com/archives/dns%E8%AE%BE%E7%B ...