(二)Hibernate4 CRUD 体验
所有的学习我们必须先搭建好hibernate的环境(1、导入对应的jar包,2、hibernate.cfg.xml,3、XXXX.hbm.xml)
第一节:HibernateUtil 封装
导入对应的hibernate的jar包和mysql的jar包
HibernateUtil.java
- package com.wishwzp.util;
- import org.hibernate.SessionFactory;
- import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
- import org.hibernate.cfg.Configuration;
- import org.hibernate.service.ServiceRegistry;
- /**
- *
- * hibernate封装
- * @author wishwzp
- *
- */
- public class HibernateUtil {
- private static final SessionFactory sessionFactory=buildSessionFactory();
- /**
- * 绑定SessionFactory
- * @return
- */
- private static SessionFactory buildSessionFactory(){
- // 实例化配置文件
- Configuration configuration=new Configuration().configure();
- // 实例化服务登记
- ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
- //获取Session工厂
- return configuration.buildSessionFactory(serviceRegistry);
- }
- public static SessionFactory getSessionFactory(){
- return sessionFactory;
- }
- }
第二节:XML 版CRUD 实现
导入对应的hibernate的jar包、mysql的jar包和添加每次都需要用到的HibernateUtil.java
Student.java
- package com.wishwzp.model;
- public class Student {
- private long id;
- private String name;
- public long getId() {
- return id;
- }
- public void setId(long id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- @Override
- public String toString() {
- return "Student [id=" + id + ", name=" + name + "]";
- }
- }
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="com.wishwzp.model">
- <class name="Student" table="t_student">
- <id name="id" column="stuId">
- <generator class="native"></generator>
- </id>
- <property name="name"></property>
- </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://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">123456</property>
- <!-- 方言 -->
- <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
- <!-- 控制台显示SQL -->
- <property name="show_sql">true</property>
- <!-- 自动更新表结构 -->
- <property name="hbm2ddl.auto">update</property>
- <!-- XML 版CRUD 实现 -->
- <mapping resource="com/wishwzp/model/Student.hbm.xml"/>
- </hibernate-configuration>
StudentTest.java
- package com.wishwzp.service;
- import java.util.List;
- import org.hibernate.Query;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import com.wishwzp.model.Student;
- import com.wishwzp.util.HibernateUtil;
- public class StudentTest {
- private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
- /**
- * 添加
- */
- private void add(){
- // 生成一个session
- Session session=sessionFactory.openSession();
- // 开启事务
- session.beginTransaction();
- Student s=new Student();
- s.setName("张三");
- session.save(s);
- // 提交事务
- session.getTransaction().commit();
- // 关闭session
- session.close();
- }
- /**
- * 删除
- */
- private void delete(){
- // 生成一个session
- Session session=sessionFactory.openSession();
- // 开启事务
- session.beginTransaction();
- Student student=(Student)session.get(Student.class, Long.valueOf(1));
- session.delete(student);
- // 提交事务
- session.getTransaction().commit();
- // 关闭session
- session.close();
- }
- /**
- * 更新
- */
- private void update(){
- // 生成一个session
- Session session=sessionFactory.openSession();
- // 开启事务
- session.beginTransaction();
- Student student=(Student)session.get(Student.class, Long.valueOf(2));
- student.setName("张三2");
- session.save(student);
- // 提交事务
- session.getTransaction().commit();
- // 关闭session
- session.close();
- }
- /**
- * 查询
- */
- private void getAllStudent(){
- // 生成一个session
- Session session=sessionFactory.openSession();
- // 开启事务
- session.beginTransaction();
- String hql="from Student";
- Query query=session.createQuery(hql);
- List<Student> studentList=query.list();
- for(Student student:studentList){
- System.out.println(student);
- }
- // 提交事务
- session.getTransaction().commit();
- // 关闭session
- session.close();
- }
- public static void main(String[] args) {
- StudentTest studentTest=new StudentTest();
- studentTest.add();
- // studentTest.delete();
- // studentTest.update();
- // studentTest.getAllStudent();
- }
- }
第三节:注解版CRUD 实现
导入对应的hibernate的jar包、mysql的jar包和添加每次都需要用到的HibernateUtil.java
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">123456</property>
- <!-- 方言 -->
- <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
- <!-- 控制台显示SQL -->
- <property name="show_sql">true</property>
- <!-- 自动更新表结构 -->
- <property name="hbm2ddl.auto">update</property>
- <!-- 注解版CRUD 实现 -->
- <mapping class="com.wishwzp.model.Teacher"/>
- </session-factory>
- </hibernate-configuration>
Teacher.java
- package com.wishwzp.model;
- import javax.persistence.Entity;
- import javax.persistence.GeneratedValue;
- import javax.persistence.Id;
- import javax.persistence.Table;
- import org.hibernate.annotations.GenericGenerator;
- //实体
- @Entity
- //这个是你指定是数据库哪张表,我这里指定的是t_teacher
- @Table(name="t_teacher")
- public class Teacher {
- private long id;
- private String name;
- @Id//主键
- @GeneratedValue(generator="_native")//这里开始使用名为_native的策略
- @GenericGenerator(name="_native",strategy="native")//这里定义一个名为_native的策略,是native
- public long getId() {
- return id;
- }
- public void setId(long id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- @Override
- public String toString() {
- return "Teacher [id=" + id + ", name=" + name + "]";
- }
- }
TeacherTest.java
- package com.wishwzp.service;
- import java.util.List;
- import org.hibernate.Query;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import com.wishwzp.model.Teacher;
- import com.wishwzp.util.HibernateUtil;
- public class TeacherTest {
- private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
- public void add(){
- Session session=sessionFactory.openSession(); // 生成一个session
- session.beginTransaction(); // 开启事务
- Teacher s=new Teacher();
- s.setName("张三");
- session.save(s);
- session.getTransaction().commit(); // 提交事务
- session.close(); // 关闭session
- }
- public void delete(){
- Session session=sessionFactory.openSession(); // 生成一个session
- session.beginTransaction(); // 开启事务
- Teacher Teacher=(Teacher)session.get(Teacher.class, Long.valueOf(1));
- session.delete(Teacher);
- session.getTransaction().commit(); // 提交事务
- session.close(); // 关闭session
- }
- public void update(){
- Session session=sessionFactory.openSession(); // 生成一个session
- session.beginTransaction(); // 开启事务
- Teacher Teacher=(Teacher)session.get(Teacher.class, Long.valueOf(2));
- Teacher.setName("张三2");
- session.save(Teacher);
- session.getTransaction().commit(); // 提交事务
- session.close(); // 关闭session
- }
- public void getAllTeacher(){
- Session session=sessionFactory.openSession(); // 生成一个session
- session.beginTransaction(); // 开启事务
- String hql="from Teacher";
- Query query=session.createQuery(hql);
- List<Teacher> TeacherList=query.list();
- for(Teacher Teacher:TeacherList){
- System.out.println(Teacher);
- }
- session.getTransaction().commit(); // 提交事务
- session.close(); // 关闭session
- }
- public static void main(String[] args) {
- TeacherTest TeacherTest=new TeacherTest();
- // TeacherTest.add();
- // TeacherTest.delete();
- // TeacherTest.update();
- TeacherTest.getAllTeacher();
- }
- }
注释版的我们就不需要在去配置XXX.hbm.xml了。
第四节:Junit4 单元测试框架引入
导入对应的junit包
百度云:http://pan.baidu.com/s/1dFBbhhZ
密码:3z1i
在测试版CRUD的基础上,我们运用junit重写了运行主类mian()。
TeacherTest2.java
- package com.wishwzp.service;
- import java.util.List;
- import org.hibernate.Query;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.junit.Test;
- import com.wishwzp.model.Teacher;
- import com.wishwzp.util.HibernateUtil;
- public class TeacherTest2 {
- private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();
- @Test
- public void testAdd() {
- Session session=sessionFactory.openSession(); // 生成一个session
- session.beginTransaction(); // 开启事务
- Teacher s=new Teacher();
- s.setName("张三");
- session.save(s);
- session.getTransaction().commit(); // 提交事务
- session.close(); // 关闭session
- }
- @Test
- public void testDelete() {
- Session session=sessionFactory.openSession(); // 生成一个session
- session.beginTransaction(); // 开启事务
- Teacher Teacher=(Teacher)session.get(Teacher.class, Long.valueOf(2));
- session.delete(Teacher);
- session.getTransaction().commit(); // 提交事务
- session.close(); // 关闭session
- }
- @Test
- public void testUpdate() {
- Session session=sessionFactory.openSession(); // 生成一个session
- session.beginTransaction(); // 开启事务
- Teacher Teacher=(Teacher)session.get(Teacher.class, Long.valueOf(3));
- Teacher.setName("张三2");
- session.save(Teacher);
- session.getTransaction().commit(); // 提交事务
- session.close(); // 关闭session
- }
- @Test
- public void testGetAllTeacher() {
- Session session=sessionFactory.openSession(); // 生成一个session
- session.beginTransaction(); // 开启事务
- String hql="from Teacher";
- Query query=session.createQuery(hql);
- List<Teacher> TeacherList=query.list();
- for(Teacher Teacher:TeacherList){
- System.out.println(Teacher);
- }
- session.getTransaction().commit(); // 提交事务
- session.close(); // 关闭session
- }
- }
(二)Hibernate4 CRUD 体验的更多相关文章
- Hibernate学习2—Hibernate4 CRUD体验初步
接着上一节,工程结构: jar包没有变化: 一.HibernateUtil 封装: com.cy.util.HibernateUtil.java: package com.cy.util; impor ...
- [Beego模型] 二、CRUD 操作
[Beego模型] 一.ORM 使用方法 [Beego模型] 二.CRUD 操作 [Beego模型] 三.高级查询 [Beego模型] 四.使用SQL语句进行查询 [Beego模型] 五.构造查询 [ ...
- kubebuilder实战之二:初次体验kubebuilder
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Mybatis-plus<二>通用CRUD,分页
Mybatis-plus<二>通用CRUD,分页 与博客Mybatis-plus<一>为同一个Springboot项目. Demo GitHub下载地址:https://git ...
- mybatis(二)执行CRUD操作的两种方式配置和注解
一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...
- Mybatis学习(二) - CRUD操作(增删改查操作)
直接上例子: 1.项目结构: 2.具体代码及配置 User.java package com.mybatis.bean; public class User { private int id; pri ...
- 邮件实现详解(二)------手工体验smtp和pop3协议
上篇博客我们简单介绍了电子邮件的发送和接收过程,对参与其中的邮件服务器,邮件客户端软件,邮件传输协议也有简单的介绍.我们知道电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递必须 ...
- REST构架风格介绍之二:CRUD
转载自:Todd Wei http://www.cnblogs.com/weidagang2046/archive/2009/05/09/1453065.html 上一节我们通过两个例子初步体 ...
- Yaf学习(二)----Yaf初体验
1.hello world 1.1 用yaf输出hello world 1.首先配置host,nginx 2.host不用多说,指向虚拟机IP即可 1.2 重点说一下nginx (只说server块) ...
随机推荐
- oracle 日志学习(转载)
一,重做日志概念 重做日志文件(redo log file)对于Oracle数据库至关重要.它们是数据库的事务日志.通常只用于恢复,不过也可以用于以下工作: q 系统崩溃后的实例恢复 q 通过备份恢复 ...
- Android Fragment 基本介绍[转]
Fragment Android是在Android 3.0 (API level 11)开始引入Fragment的. 可以把Fragment想成Activity中的模块,这个模块有自己的布局,有自己的 ...
- Hadoop学习记录(4)|MapReduce原理|API操作使用
MapReduce概念 MapReduce是一种分布式计算模型,由谷歌提出,主要用于搜索领域,解决海量数据计算问题. MR由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce( ...
- POJ3280 - Cheapest Palindrome(区间DP)
题目大意 给定一个字符串,要求你通过插入和删除操作把它变为回文串,对于每个字符的插入和删除都有一个花费,问你把字符串变为回文串最少需要多少花费 题解 看懂题立马YY了个方程,敲完就交了,然后就A了,爽 ...
- SRM144 - SRM 148(少144-DIV1-LV3,147-DIV2-LV3)
SRM 144 DIV 1 500pt tag:组合 题意:彩票中奖.给定n, m,从1-n中选择m个数组成数列a1, a2, a3...am.对于数列{am}分别满足以下条件的概率: (1)数列所有 ...
- IT应聘者的简历应该是怎么样的?
从去年到现在看了几百份简历,包括产品运营和产品设计师的职位.我不是 HR,只是想直接看到求职者的状况,看看是不是要换更准确的渠道去招聘对的人.我看简历的目的也很简单:找到没有什么问题且可能合适的人,然 ...
- hadoop-2.6.0.tar.gz + spark-1.5.2-bin-hadoop2.6.tgz的集群搭建(单节点)
前言 本人呕心沥血所写,经过好一段时间反复锤炼和整理修改.感谢所参考的博友们!同时,欢迎前来查阅赏脸的博友们收藏和转载,附上本人的链接.http://www.cnblogs.com/zlslch/p/ ...
- GCC扩展 __attribute__ ((visibility("hidden")))
试想这样的情景,程序调用某函数A,A函数存在于两个动态链接库liba.so,libb.so中,并且程序执行需要链接这两个库,此时程序调用的A函数到底是来自于a还是b呢? 这取决于链接时的顺序,比如先链 ...
- java初学的几个问题
1. 请问配置JDK时环境变量path和JAVA_HOME的作用是什么? 作用:告诉操作系统编译器运行的路径和生成的类路径.这样java源程序才可以进行编译和运行. 以下4-7题请在JDK环境下编译和 ...
- React-Native首次运行提示-ReferenceError-Can-t-find-variable-fbBatchedBridge
React Native运行报错ReferenceError: Can't find variable: _fbBatchedBridge' React Native目前貌似要火的样子,作为移动开发人 ...