Java_Web三大框架之Hibernate增删改查
下面介绍一下Hibernate的增删改查。
第一步:编写用户实体类以及User.hbm.xml映射
package com.msl.entity; public class User { private int id;
private String name;
private String password;
private String telephone;
private String username;
private String isadmin; public User() {
}
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 String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getIsadmin() {
return isadmin;
}
public void setIsadmin(String isadmin) {
this.isadmin = isadmin;
}
}
User.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">
<hibernate-mapping
package="com.msl.entity"> <class name="User" table="Users"> <!-- 对持久化类User的映射配置 -->
<!--
Hibernate主键策略:
1、increment:用于Long、Short或者Int类型生成唯一标识。在集群下不要使用该属性
2、identity:由底层数据库生成该属性,前提是底层数据库支持自增字段类型
3、sequence:根据底层数据库的序列生成主键,前提是底层数据库支持序列
4、hilo:根据高/低算法生成,吧特定表的字段作为高位值来源,在默认情况下选用hibernate_unique_key表的next_hi字段
5、native:
6、assigned:
7、select:
8、foreign:
-->
<id name="id">
<generator class="increment"/>
</id>
<!--
name:持久化类属性的名称;以小写字母开头
column:数据库字段名
type:数据库字段类型
length:数据库字段定义的长度
not-null:给数据库字段是否可以为空,该属性为布尔变量
unique:该数据库字段是否唯一,该属性为布尔变量
lazy:是否延迟抓取,该属性为布尔变量
-->
<property name="name" not-null="true" />
<property name="password" not-null="true"/>
<property name="telephone" not-null="true"/>
<property name="username" not-null="true"/>
<property name="isadmin" not-null="true"/>
</class> </hibernate-mapping>
第二步:封装HibernateUtil类
package com.msl.HibernateUtil; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtil { private HibernateUtil(){ };
public static SessionFactory sessionFactory=null; static{
//Hibernate初始化
Configuration cf=new Configuration();
cf.configure();
sessionFactory=cf.buildSessionFactory();//DriverManager.getConnection(url)
//Session session = SessionFactory.openSession();//相当于得到Connection对象 }
public static Session getSession(){
return sessionFactory.openSession();
}
public static void closeSession(Session session){
if(session!=null){
session.close();
}
}
}
第三步:编写hibernate.cfg.xml映射
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
<session-factory>
<!-- 数据库方言 -->
<!--
MySQL: #hibernate.dialect org.hibernate.dialect.MySQLDialect
Oracle:#hibernate.dialect org.hibernate.dialect.OracleDialect
SQLServer:#hibernate.dialect org.hibernate.dialect.SQLServerDialect
-->
<property name="dialect"> <!-- Hibernate方言 -->
org.hibernate.dialect.OracleDialect
</property>
<property name="hibernate.connection.url"> <!-- 数据库连接URL -->
jdbc:oracle:thin:@localhost:1521:orcl
</property>
<property name="hibernate.connection.driver_class"> <!-- 数据库驱动 -->
oracle.jdbc.driver.OracleDriver
</property>
<!-- 数据库连接用户名 -->
<property name="hibernate.connection.username">epet</property>
<!-- 数据库连接密码 -->
<property name="hibernate.connection.password">123456</property>
<property name="show_sql">true</property> <!-- 打印SQL语句 -->
<!-- 自动创建数据库表格 -->
<!--
#hibernate.hbm2ddl.auto create-drop
#hibernate.hbm2ddl.auto create
#hibernate.hbm2ddl.auto update
#hibernate.hbm2ddl.auto validate
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="com/msl/entity/User.hbm.xml"/> <!-- 配置映射信息 -->
</session-factory>
</hibernate-configuration>
第四步:增删改查测试类:
package com.msl.test; import org.hibernate.Session;
import org.hibernate.Transaction; import com.msl.HibernateUtil.HibernateUtil;
import com.msl.entity.User; /**
* Hibernate保存数据
* @author Administrator
*
*/
public class test { public static void main(String[] args) { User user=new User();
user.setName("dsd");
user.setPassword("123456");
user.setTelephone("1234567890");
user.setUsername("小明");
user.setIsadmin("2"); Session session=HibernateUtil.getSession(); //进行事务处理
Transaction transaction=session.beginTransaction();
try{
//对数据保存至数据库
session.save(user);
//提交事务
transaction.commit();
}catch(Exception e){
e.printStackTrace();
//如果出现异常,事务回滚
transaction.rollback();
}finally{
HibernateUtil.closeSession(session);
}
} }
package com.msl.test; import org.hibernate.Session;
import org.hibernate.Transaction; import com.msl.HibernateUtil.HibernateUtil;
import com.msl.entity.User;
/**
* Hibernate更新数据
* @author Administrator
*
*/
public class test1 { // /**
// * update 更新数据
// * @param args
// */
// public static void main(String[] args) {
// User user=new User();
// user.setId(2);
// user.setName("dsd");
// user.setPassword("123456");
// user.setTelephone("1234567890");
// user.setUsername("小明");
// user.setIsadmin("1");
//
// Session session=HibernateUtil.getSession();
//
// //进行事务处理
// Transaction transaction=session.beginTransaction();
// try{
// //对数据保存至数据库
// session.update(user);
// //提交事务
// transaction.commit();
// }catch(Exception e){
// e.printStackTrace();
// //如果出现异常,事务回滚
// transaction.rollback();
// }finally{
// HibernateUtil.closeSession(session);
// }
// }
public static void main(String[] args) {
Session session=null;
Transaction transaction=null;
try{
session=HibernateUtil.getSession();
transaction=session.beginTransaction();
User user=(User)session.get(User.class, new Integer("1"));
user.setIsadmin("2");
session.flush();
transaction.commit();
}catch(Exception e){
System.out.println("更新失败");
e.printStackTrace();
transaction.rollback();
}finally{
HibernateUtil.closeSession(session);
}
}
}
package com.msl.test; import org.hibernate.Session;
import org.hibernate.Transaction; import com.msl.HibernateUtil.HibernateUtil;
import com.msl.entity.User; /**
* Hibernate查询数据
* @author Administrator
*
*/
public class test2 { // /**
// * 查询 方法 get()
// * @param args
// */
// public static void main(String[] args) {
// Session session=HibernateUtil.getSession();
// //进行事务处理
// Transaction transaction=session.beginTransaction();
// try{
// User user=(User)session.get(User.class, new Integer("2"));
// System.out.println("id:"+user.getId());
// System.out.println(user.getName());
// System.out.println(user.getPassword());
// System.out.println(user.getTelephone());
// System.out.println(user.getUsername());
// System.out.println(user.getIsadmin());
// //提交事务
// transaction.commit();
// }catch(Exception e){
// e.printStackTrace();
// //如果出现异常,事务回滚
// transaction.rollback();
// }finally{
// HibernateUtil.closeSession(session);
// }
//
// }
// /**
// * 查询 方法load() 1
// * @param args
// */
// public static void main(String[] args) {
// Session session=HibernateUtil.getSession();
// //进行事务处理
// Transaction transaction=session.beginTransaction();
// try{
// User user=(User)session.load(User.class, new Integer("2"));
// System.out.println("id:"+user.getId());
// System.out.println(user.getName());
// System.out.println(user.getPassword());
// System.out.println(user.getTelephone());
// System.out.println(user.getUsername());
// System.out.println(user.getIsadmin());
// //提交事务
// transaction.commit();
// }catch(Exception e){
// e.printStackTrace();
// //如果出现异常,事务回滚
// transaction.rollback();
// }finally{
// HibernateUtil.closeSession(session);
// }
//
// }
/**
* 查询 方法load() 1
* @param args
*/
public static void main(String[] args) {
User user=new User();
Session session=HibernateUtil.getSession();
//进行事务处理
Transaction transaction=session.beginTransaction();
try{
session.load(user,new Integer("2"));
System.out.println("id:"+user.getId());
System.out.println(user.getName());
System.out.println(user.getPassword());
System.out.println(user.getTelephone());
System.out.println(user.getUsername());
System.out.println(user.getIsadmin());
//提交事务
transaction.commit();
}catch(Exception e){
e.printStackTrace();
//如果出现异常,事务回滚
transaction.rollback();
}finally{
HibernateUtil.closeSession(session);
} } }
package com.msl.test; import org.hibernate.Session;
import org.hibernate.Transaction; import com.msl.HibernateUtil.HibernateUtil;
import com.msl.entity.User; /**
* 删除数据
* @author Administrator
*
*/
public class test3 { public static void main(String[] args) { Session session=HibernateUtil.getSession();
//进行事务处理
Transaction transaction=session.beginTransaction();
try{
User user=(User)session.load(User.class, new Integer("2"));
session.delete(user);
session.flush();
//提交事务
transaction.commit();
}catch(Exception e){
System.out.println("删除失败");
e.printStackTrace();
//如果出现异常,事务回滚
transaction.rollback();
}finally{
HibernateUtil.closeSession(session);
} } }
Java_Web三大框架之Hibernate增删改查的更多相关文章
- hibernate框架(1)---Hibernate增删改查
Hibernate增删改查 1.首先我们要知道什么是Hibernate Hibernate是一个轻量级的ORMapping对象.主要用来实现Java和数据库表之间的映射,除此之外还提供数据查询和数据获 ...
- hibernate系列笔记(1)---Hibernate增删改查
Hibernate增删改查 1.首先我们要知道什么是Hibernate Hibernate是一个轻量级的ORMapping对象.主要用来实现Java和数据库表之间的映射,除此之外还提供数据查询和数据获 ...
- Spring JdbcTemplate框架搭建及其增删改查使用指南
Spring JdbcTemplate框架搭建及其增删改查使用指南 前言: 本文指在介绍spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基 ...
- SSHE框架整合(增删改查)
1.前期准备:jar包(c3p0.jdbc ,各个框架) web.xml文件:spring的 转码的,和Struts2的过滤器 <?xml version="1.0" e ...
- 快速入门GreenDao框架并实现增删改查案例
大家的项目中不可避免的使用到SQLite,为此我们要花费心思编写一个增删改查框架.而一个好的ORM框架则能够给我们带来极大的方便,今天给大家讲解一个非常火热的ORM-GreenDao. 基本概念 Gr ...
- Mybatis框架二:增删改查
这里是搭建框架和准备数据: http://www.cnblogs.com/xuyiqing/p/8600888.html 实现增删改查功能: 测试类: package junit; import ja ...
- hibernate课程 初探单表映射3-5 hibernate增删改查
本节简介: 1 增删改查写法 2 查询load和查询get方法的区别 3 demo 1 增删改查写法 增加 session.save() 修改 session.update() 删除 session. ...
- ssm项目框架搭建(增删改查案例实现)——(SpringMVC+Spring+mybatis项目整合)
Spring 常用注解 内容 一.基本概念 1. Spring 2. SpringMVC 3. MyBatis 二.开发环境搭建 1. 创建 maven 项目 2. SSM整合 2.1 项目结构图 2 ...
- 针对MySql封装的JDBC通用框架类(包含增删改查、JavaBean反射原理)
package com.DBUtils; import java.lang.reflect.Field; import java.sql.Connection; import java.sql.Dri ...
随机推荐
- Screenshot: available via screen
在使用selenium+PhantomJS进行爬虫时候报错 selenium.common.exceptions.TimeoutException: Message: Screenshot: avai ...
- muduo库源码剖析(一) reactor模式
一. Reactor模式简介 Reactor释义“反应堆”,是一种事件驱动机制.和普通函数调用的不同之处在于:应用程序不是主动的调用某个API完成处理,而是恰恰相反,Reactor逆置了事件处理流程, ...
- android 通过子线程跳转activity并传递内容
android 子线程中不能够更新ui已经根深蒂固在我的脑海里,当时也就理所当然的觉得子线程中也是不能够进行界面的跳转的,可是在后来的学习中,发现居然是能够通过子线程来进行activity的跳转时,立 ...
- 完美解决EditText和ScrollView的滚动冲突(上)
在网上搜了一下EditText和ScrollView的滚动冲突,发现差点儿全部的解决方式都是触摸EditText的时候就将事件交由EditText处理,否则才将事件交由ScrollView处理.这样确 ...
- LeetCode 438. Find All Anagrams in a String (在字符串中找到所有的变位词)
Given a string s and a non-empty string p, find all the start indices of p's anagrams in s. Strings ...
- BZOJ 2338 HNOI2011 数矩形 计算几何
题目大意:给定n个点,求一个最大的矩形,该矩形的四个顶点在给定的点上 找矩形的方法是记录全部线段 若两条线段长度相等且中点重合 这两条线段就能够成为矩形的对角线 于是我们找到全部n*(n-1)/2条线 ...
- shell 字符串拼接 获取自身文件名 日志记录
shell 字符串拼接 获取自身文件名 日志记录 [root@hadoop2 xiaole_chk_url]# sh a.sh123.loga.sh[root@hadoop2 xiaole_chk_ ...
- 【Ubuntu】无法挂载磁盘
我的电脑分了三个分区,A,B,C,其中A和B是Windows盘,C是ubuntu系统盘 某日发现A ,B盘没法进入了,在文件管理器中点一下,没有反应.于是右击盘符,点击挂载,跳出错误信息: (划重点) ...
- git的基本操作流程
1.git clone 初始会有默认的master分支,并且master和origin/master自动建立了映射关系 2. git checkout -b local 创建并且切换到local ...
- ubuntu安装phpstorm
首先要安装jdk $ java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1 ...