hibernate篇章六--demo(Hibernate之第1解之-hibernate_demo_1)
准备工作做好了,开始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)的更多相关文章
- hibernate篇章六--demo(0.准备工作)
		这个demo是学习自:学习不可已 这个章节我们先来说准备工作:Hibernate之第〇解之准备工作 首先: 1.新建java project--hibernate_demo_1: 2.新建src fo ... 
- 【SSH系列】-- hibernate基本原理&&入门demo
		什么是hibernate? hibernate在英文中是冬眠的意思,当冬季来临,世界万物开始准备冬眠,但是程序猿这种动物好像不冬眠,因为需求变了,要改bug,冬眠,对于对象来说就是持 ... 
- 攻城狮在路上(壹) Hibernate(十六)--- Hibernate声明数据库事务
		一.数据库事务的概念: 数据库的ACID特征:Atomic.Consistency.Isolation.Durability.原子性.一致性.隔离性.持久性.不同的隔离级别引发的不同问题. 事务的AC ... 
- 第六章   Hibernate关联映射
		第六章 hibernate关联映射一.本章知识点分为2部分:1.关联关系:单向多对一关联关系,双向一对多关联关系(含一对多关联关系),多对多关联关系2.延迟加载:类级别加载策略,一对多加载策略,多对一 ... 
- hibernate(六)一对一映射
		关系映射是指对象之间的关系,并不是指数据库的关系,关系映射是解决当对象处于以下关系之一时,数据库表该如何映射的问题 (一)一对一单向外键关联 1.注解方式配置 创建一个Husband类和Wife类 H ... 
- hibernate篇章三-- hibernate配置文件hibernate.cfg.xml的详细解释
		<!--标准的XML文件的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML文件的编码方式--> <?xml version='1.0' ... 
- hibernate篇章二--成就搭建hibernate框架
		在网上的资料很多,但是成功搭建一个Hibernate框架的很少,下面我将用一个简单的例子成功搭建一个Hibernate框架给大伙瞧瞧 该链接中有源代码和数据库,例子很简单,只是往数据库中的person ... 
- (六)Hibernate 映射类型
		所有项目导入对应的hibernate的jar包.mysql的jar包和添加每次都需要用到的HibernateUtil.java 第一节:基本类型映射 例子: hibernate.cfg.xml < ... 
- Hibernate第六篇【多对多映射、一对一映射】
		前言 前面已经讲解了一对多和多对一的映射是怎么配置了,也讲解了inverse和cascade属性对关联关系的影响,本博文讲解多对多的映射和一对一的映射! 多对多映射 需求:一个项目由多个员工开发,一个 ... 
随机推荐
- 把USB打印机映射到LPT端口
			把USB打印机映射到LPT端口(pos小票机测试成功)2010-12-23 18:11:00| 分类: 編程 | 标签: |字号大中小 订阅 注释:在DOS命令行下运行以下命令(以下为示例,根据实际情 ... 
- CLR C++ Set Word CustomDocumentProperties
			// WordIssue.cpp : main project file. #include "stdafx.h" using namespace System; using na ... 
- diamond专题(四)—— 容灾机制
			大家好,本次为大家带来diamond的容灾机制. diamond之所以表现的稳定可靠,除了架构简单之外,另一个重要原因是diamond具有一套完备的容灾机制,容灾机制涉及到client和server两 ... 
- CodeForcesGym 100753B Bounty Hunter II  二分图最小路径覆盖
			关键在建图 题解:http://www.cnblogs.com/crackpotisback/p/4856159.html 学习:http://www.cnblogs.com/jackiesteed/ ... 
- Code First to an Existing Database
			Code First to an Existing Database https://msdn.microsoft.com/en-us/data/jj200620 https://weblogs.as ... 
- lua package.path的使用
			需要用lua写一个工具,c++调用lua,然后这个lua要require其他lua脚本,在主lua里面设置package.path,但一直都失败,甚至lua都无法编译通过. project_path ... 
- 五指cms标签说明汇总
			1.栏目列表标签 只有一级导航: {wz:content action="category" cid="0" pagesize="100" ... 
- ACM编程技巧--常用字符操作函数
			字符串与基本数据类型的转换 int sscanf(buff,"%d%d",&a,&b); //返回值是参数个数 int sprintf(buff,"%d% ... 
- 路由器中pppoe,动态IP,静态IP的区别
			路由器中pppoe,动态IP,静态IP的区别 要把路由器设置得能上网,无非就是设置WAN外网接口连接而已.WAN接口能上网,则连接的电脑就能上网,反之则上不了网.只不过WAN接口往往有pppoe,动态 ... 
- POJ2104&&HDU2665(静态区间第K小)
			题目大意 给定一个有N个数字的序列,然后又m个查询,形式如下: l r k 要求你返回区间[l,r]第k小的数是哪个 题解 终于弄懂主席树是个啥东西了,O(∩_∩)O~~,这题正是主席树的裸题,主席树 ... 
