文档章节

Hibernate CRUD

小代码2016
 小代码2016
发布于 2016/03/09 09:48
字数 672
阅读 52
收藏 2
点赞 1
评论 0

目录结构:

 

代码:

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.username">root</property>
		<property name="connection.password">root</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql:///hone</property>

		<!-- 配置 hibernate 的基本信息 -->
		<!-- hibernate 所使用的数据库方言 -->
		<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>

		<!-- 执行操作时是否在控制台打印 SQL -->
		<property name="show_sql">true</property>

		<!-- 是否对 SQL 进行格式化 -->
		<property name="format_sql">true</property>

		<!-- 指定自动生成数据表的策略 -->
		<property name="hbm2ddl.auto">update</property>

		<!-- 指定关联的 .hbm.xml 文件 -->
		<mapping resource="com/laolang/domain/Student.hbm.xml" />
	</session-factory>
</hibernate-configuration>

 

com.laolang.domain.Student

package com.laolang.domain;

public class Student {

	public Student() {
		super();
	}

	public Student(String name, int age, String sex) {
		super();
		this.name = name;
		this.age = age;
		this.sex = sex;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", age=" + age
				+ ", sex=" + sex + "]";
	}

	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 int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	private int id;
	private String name;
	private int age;
	private String sex;
}

 

com.laolang.student.Student.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">
<!-- Generated 2016-3-9 8:52:51 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.laolang.domain.Student" table="STUDENT">
        <id name="id" type="int">
            <column name="ID" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
        <property name="age" type="int">
            <column name="AGE" />
        </property>
        <property name="sex" type="java.lang.String">
            <column name="SEX" />
        </property>
    </class>
</hibernate-mapping>

 

com.laolang.util.HibernateUtil

package com.laolang.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtil {

	private final static SessionFactory FACTORY = buildSessionFactory();

	private static SessionFactory buildSessionFactory() {
		Configuration cfg = new Configuration().configure();
		ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
				.applySettings(cfg.getProperties()).buildServiceRegistry();
		SessionFactory factory = cfg.buildSessionFactory(serviceRegistry);
		return factory;
	}

	public static SessionFactory getSessionFactory() {
		return FACTORY;
	}

	public static Session openSession() {
		return FACTORY.openSession();
	}

	public static void close(Session session) {
		if (session != null)
			session.close();
	}
}

 

com.laolang.test.TestCrud

package com.laolang.test;

import java.util.List;

import org.hibernate.Session;
import org.junit.Test;

import com.laolang.domain.Student;
import com.laolang.util.HibernateUtil;

public class Testrud {

	@Test
	public void testAdd() {
		Session session = null;
		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();

			Student stu = new Student("小代码", 23, "男");

			session.save(stu);
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			if (session != null)
				session.getTransaction().rollback();
		} finally {
			HibernateUtil.close(session);
		}
	}

	@Test
	public void testLoad() {
		Session session = null;
		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();
			Student stu = (Student) session.load(Student.class, 3);
			System.out.println(stu);
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			HibernateUtil.close(session);
		}
	}

	@Test
	public void testUpdate() {
		Session session = null;
		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();

			Student stu = (Student) session.load(Student.class, 3);
			stu.setAge(66);
			session.update(stu);
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			if (session != null)
				session.getTransaction().rollback();
		} finally {
			HibernateUtil.close(session);
		}
	}

	@Test
	public void testDelete() {
		Session session = null;
		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();

			Student stu = new Student();
			stu.setId(2);
			session.delete(stu);
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			if (session != null)
				session.getTransaction().rollback();
		} finally {
			HibernateUtil.close(session);
		}
	}

	@SuppressWarnings("unchecked")
	@Test
	public void testList() {
		Session session = null;
		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();

			List<Student> stus = session.createQuery("from Student").list();
			for (Student u : stus) {
				System.out.println(u);
			}

			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			if (session != null)
				session.getTransaction().rollback();
		} finally {
			HibernateUtil.close(session);
		}
	}

	@SuppressWarnings("unchecked")
	@Test
	public void testListPage() {
		Session session = null;
		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();

			List<Student> stus = session.createQuery("from Student")
					.setFirstResult(2).setMaxResults(2).list();
			for (Student u : stus) {
				System.out.println(u);
			}

			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			if (session != null)
				session.getTransaction().rollback();
		} finally {
			HibernateUtil.close(session);
		}
	}

}

 

需要注意的点:

1、主键修改为native

2、如果是mysql5.5,则修改

 <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>

也就是多了一个5

 

 

© 著作权归作者所有

共有 人打赏支持
小代码2016
粉丝 35
博文 311
码字总数 153495
作品 0
安阳
程序员
Hibernate创建SessionFactory是程序卡住不运行?

使用Hibernate4写一个CRUD示例,javase程序,在main方法中创建sessionFactory,使用如下代码: private HibernateUtils() { try { if (this.sessionFactory == null) { Configuration cfg = new......

灰度乌鸦
2014/05/13
474
0
不知道为什么SSH 这么流行

以前曾经用过 SSH 来做程序,有几个感受: Spring: 里面有些不错的最佳实践,这个东西确实比较实用。特别是Spring MVC,加上freemarker非常棒。而且体积很小。 JDBCTemplate 也蛮实用的 Hibe...

宏哥
2010/12/17
8.9K
92
Hibernate Contextual sessions

Hibernate Contextual sessions Contextual sessions:上下文session, 一个session只在一个给点的上下文中有效。 从3.0.1开始,Hibernate添加了SessionFactory.getCurrentSession()方法获取...

LiJIaming
2012/07/01
0
0
baomidou/mybatisplus-spring-boot-starter

#mybatisplus-spring-boot-starter mybatisplus-spring-boot-starter 为 Mybatis-Plus 快速集成 spring-boot 简化配置而生,不再需拿 MyBatis 和 Hibernate 相比,mybatis-plus 作为 mybati......

baomidou
2017/05/05
0
0
A Note on Hibernate - One To Many

Download hibernate-test.zip - 8.4 KB Introduction This is a note on Hibernate one to many mappings. Background This is a note on Hibernate one to many mappings. Before working o......

Dr. Song Li
2017/12/24
0
0
Hibernate 增强工具包--Hibernate-Plus

简介 | Intro Hibernate 增强工具包 - 只做增强不做改变,更加精简持久层CRUD操作 优点 | Advantages 纯正血统:完全继承原生 Hibernate 的所有特性 最少依赖:仅仅依赖 Hibernate 自动生成代...

青苗
2016/12/06
1K
3
Hibernate泛型DAO层--SwiftDAO

SwiftDAO是一个轻量级的,基于Hibernate框架的泛型DAO层。如果您使用Hibernate和Spring 框架做开发,SwiftDAO实现了常见的CRUD操作,利用它可以省去很多简单重复代码的编写。 示例代码: @E...

匿名
2010/03/09
3.7K
0
Hibernate-Plus 发布 1.0.0.Final

简介 | Intro Hibernate 增强工具包 - 只做增强不做改变,更加精简持久层CRUD操作 优点 | Advantages 纯正血统:完全继承原生 Hibernate 的所有特性 最少依赖:仅仅依赖 Hibernate 自动生成代...

青苗
2016/12/06
2.4K
10
Generic DAO Framework

Hibernate Generic D.A.O. Framework是一个基于Hibernate实现,可扩展的通用泛型DAO框架。封装了一些常用的CRUD操作和搜索功能,并提供远程服务接口。 示例代码: Search search = new Sear...

匿名
2010/03/02
3.9K
0
菜鸟请教Hibernate的问题

在Hibernate中,如果两个Po配置上one-2-many 以及 many-2-one 之后,才能使用hql 进行 inner join 以及 left join 查询,但是,如果在项目中,在设计表结构上,表之间存在逻辑关系,但是不能...

soltex
2011/05/26
421
10

没有更多内容

加载失败,请刷新页面

加载更多

下一页

32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
9
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0
分布式事务常见的解决方案

随着互联网的发展,越来越多的多服务相互之间的调用,这时候就产生了一个问题,在单项目情况下很容易实现的事务控制(通过数据库的acid控制),变得不那么容易。 这时候就产生了多种方案: ...

小海bug
昨天
3
0
python从零学——scrapy初体验

python从零学——scrapy初体验 近日因为一些事情,需要从网上爬取一些东西,故而想通过使用爬虫来顺便学习下强大的python。现将一些学习中遇到的问题记录下来,以便日后查询 1. 开发环境的准...

咾咔叽
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部