Hibernate学习笔记--环境搭建及运行
1、hibernate开发包下载 http://sourceforge.net/projects/hibernate/files/
如果不能访问请用代理http://dongtaiwang.com/loc/phome.php
2、添加jar包 将hibernate-release-4.3.7.Final\lib\required目录下的jar导入
3、在src目录下创建Student.java(按Javabean规范来,这些属性跟数据库中的字段对应起来)
内容如下:
package cn.sky.bookshop.bean;
public class Student {
private int id;
private String uname;
private String upass;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
@Override
public String toString() {
return "Student [id=" + id + ", uname=" + uname + ", upass=" + upass
+ "]";
}
}
4、建立一个对象关系映射文件Student.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.sky.bookshop.bean">
<class name="Student" table="student">
<id name="id" column="id">
<generator class="native"></generator>
</id>
<property name="uname" column="uname"></property>
<property name="upass" column="upass"></property>
</class>
</hibernate-mapping>
5、建立一个hibernate.cfg.xml配置文件
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/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/hibernate</property>
<property name="connection.username">root</property>
<property name="connection.password">215890</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL方言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- 是否显示执行的SQL语句 -->
<property name="show_sql">true</property>
<!-- 对象关系映射文件 -->
<mapping resource="cn/sky/bookshop/bean/Student.hbm.xml"/>
</session-factory>
</hibernate-configuration>
5、建立一个HibernateUtil.java类,主要是获取session时使用
package cn.sky.bookshop.util; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration; public final class HibernateUtil {
private static SessionFactory factory;
private static Configuration conf;
static {
conf = new Configuration().configure();
factory = conf.buildSessionFactory();
} public static Session getSession() {
return factory.openSession();
} public static void closeSession(Session session) {
if (session != null && session.isOpen()) {
session.close();
}
}
}
注意:这里色SessionFactory对象只有一个,这是按饿汉式单例设计的。
6、然后可以设计DAO了,下面是我的DAO测试类
package cn.sky.bookshop.test; import java.util.List; import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions; import cn.sky.bookshop.bean.Student;
import cn.sky.bookshop.util.HibernateUtil; public class TestStudent { public static void main(String[] args) {
// TODO Auto-generated method stub
Student stu = new Student();
stu.setUname("李四2");
stu.setUpass("123456");
// addStudent(stu); //添加数据
// updateStudent(stu, 1); //修改数据
// Student stu2 = selectStudentById(1); 查询数据
// System.out.println(stu2.toString());
// deleteStudentById(1); List list = selectStudentIf();
for (Object tem : list) {
Student stu3 = (Student)tem;
System.out.println(stu3.toString());
}
} //添加学生记录
public static void addStudent(Student stu){
Session session1 = HibernateUtil.getSession();
session1.beginTransaction();//开启事物(即创建了一个事物对象
session1.save(stu); //保存stu对象
session1.getTransaction().commit(); //提交事务
HibernateUtil.closeSession(session1);
}
//更新学生记录
public static void updateStudent(Student stu,int id){
Session session1 = HibernateUtil.getSession();
Transaction tc = session1.beginTransaction(); //创建事物对象
stu.setId(id);
session1.update(stu); //更新对象
tc.commit(); //提交事务
HibernateUtil.closeSession(session1);
}
//查询学生记录
public static Student selectStudentById(int id){
Session session1 = HibernateUtil.getSession();
Transaction tc = session1.beginTransaction(); //创建事物对象
Query query = session1.createQuery("from Student s where s.id=?");
query.setInteger(0, id); //这里下标从0开始替换?
Student stu = (Student)query.uniqueResult();
tc.commit();
HibernateUtil.closeSession(session1);
return stu;
}
//删除学生记录
public static void deleteStudentById(int id){
Session session1 = HibernateUtil.getSession();
Transaction tc = session1.beginTransaction(); //创建事物对象
Student stu = new Student();
stu.setId(id);
session1.delete(stu);
tc.commit();
HibernateUtil.closeSession(session1);
}
//条件查询
public static List<Student> selectStudentIf(){
Session s1 = HibernateUtil.getSession();
Transaction tc = s1.beginTransaction();
Criteria criteria = s1.createCriteria(Student.class); //创建条件查询对象
criteria.add(Restrictions.gt("id",1)); //添加查询条件
criteria.add(Restrictions.lt("id",5));
criteria.add(Restrictions.eq("id",2));
List<Student> list = criteria.list();
tc.commit();
s1.close();
return list;
} }
Hibernate学习笔记--环境搭建及运行的更多相关文章
- 0.react学习笔记-环境搭建与脚手架
0.环境搭建 笔者使用的是deepin/mac两种系统,因为两个电脑经常切换用.环境搭建没什么区别. 0.1 node安装 按照node官网叙述安装 # Using Debian, as root c ...
- MongoDB学习笔记~环境搭建
回到目录 Redis学习笔记已经告一段落,Redis仓储也已经实现了,对于key/value结构的redis我更愿意使用它来实现数据集的缓存机制,而对于结构灵活,查询效率高的时候使用redis就有点不 ...
- Docker学习笔记之搭建Docker运行环境
0x00 概述 既然 Docker 是一款实用软件,我们就不得不先从它的安装说起,只有让 Docker 运行在我们的计算机上,才能更方便我们对 Docker 相关知识和使用方式的学习.得益于与商业性的 ...
- VS2013中Python学习笔记[环境搭建]
前言 Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色 ...
- Spring学习笔记--环境搭建和初步理解IOC
Spring框架是一个轻量级的框架,不依赖容器就能够运行,像重量级的框架EJB框架就必须运行在JBoss等支持EJB的容器中,核心思想是IOC,AOP,Spring能够协同Struts,hiberna ...
- hadoop学习笔记——环境搭建
基础环境准备: 系统:(VirtualBox) ubuntu-12.04.2-desktop-i386.iso hadoop版本:hadoop-0.20.203.0rc1.tar.gz jdk版本:j ...
- DVWA学习笔记-----环境搭建
DVWA是一款渗透测试的演练系统,在圈子里是很出名的.如果你需要入门,那么就选它了. 我们通常将演练系统称为靶机,下面请跟着我一起搭建DVWA测试环境. 安装PHP集成环境 我这里用的是phpstu ...
- ESP32 学习笔记 - 环境搭建
打开终端 输入命令 sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-seria ...
- Hadoop学习笔记(10) ——搭建源码学习环境
Hadoop学习笔记(10) ——搭建源码学习环境 上一章中,我们对整个hadoop的目录及源码目录有了一个初步的了解,接下来计划深入学习一下这头神象作品了.但是看代码用什么,难不成gedit?,单步 ...
随机推荐
- 在其它路径新建cocos2d-x项目
打开vs2010程序,然后选择“文件—新建—项目”,如图 改了一下位置,放在D:\Program Files\cocos2d-x\ ,确定 然后点下一步 这个程序不需要物理引擎,所以可以把上面红色的圈 ...
- Spring – Sending E-Mail Via Gmail SMTP Server With MailSender--reference
Spring comes with a useful ‘org.springframework.mail.javamail.JavaMailSenderImpl‘ class to simplify ...
- WPF柱状图(支持数据库动态更新)之组件的数据动态化
WPF柱状图(支持数据库动态更新) 在这片文章中我们介绍了如何将柱状图包装成一个组件,将这个组件的属性对外开放和组件的外部属性根内部属性绑定以及非轮询动态更新数据的方式. 非轮询更新数据感觉介绍的不够 ...
- android使用模拟机测试时,若要联网IP地址该怎么写?
android使用模拟机测试时,如果服务器也是本机,那么IP地址如果写为localhost或者127.0.0.1,这样其实是不能访问到本机上部署的服务端,那么该怎么写呢?很简单,把IP地址改为10.0 ...
- tomcat中设置多项目共享jar;类包
随着服务器上的tomcat部署的项目越来越多,最近在部署一个新的项目的时候出现内存溢出的错误 Exception in thread "main" java.lang.OutOfM ...
- verilog 数组参数
verilog 支持定义数组参数,这样工程很大时,例化模块时可以使代码更简洁:详见实例 module dma_controller #( parameter integer C0_MAX_MIG_BL ...
- Activity 的生命周期与加载模式
当Activity 处于Android 应用中运行时,它的活动状态由 Android 以 Activity 栈的形式管理.当前活动的Activity位于栈顶.随着不同应用的运行,每个Activity都 ...
- dom+bom
一.判断最大值和最小值,注:arr为数组 最大值:Math.max.apply(null, arr); 最小值:Math.min.apply(null, arr); 二.BOM 打开新页面和关闭打 ...
- 自动构建工具Ant的使用-笔记
第一:什么是Ant? Apache Ant是一个基于Java的生成工具.据最初的创始人James Duncan Davidson的介绍,这个工具的名称是another neat tool(另一个整洁的 ...
- OC加强-day06
#program mark - 08 NSMutableDictionary的使用 [掌握] "/08 NSMutableDictionary的使用/1_练习 "练习 1.小明的身 ...