框架来说主要是需要写大量的配置文件,hibernate相比mybatis来说更强大,移植性更好;

1.类和数据库的映射配置:配置文件命名一般——类名.hbm.xml (user.hbm.xml),与实体类放在同一目录下,配置成员变量和数据库字段的映射:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="ni.jun.yang.bean.User" table="t_user">
<id name="userId" column="userId">
<!-- 主键自动增长 -->
<generator class="native"></generator>
</id>
<property name="userName" column="userName"></property>
<property name="userPsw" column="userPsw"></property>
</class>
</hibernate-mapping>

2.主配置文件,放在src目录下,命名一般用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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate1</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123</property>
<!-- 设置数据库方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 显示sql语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 事务隔离级别:
1.读未提交 1
2.读已提交 2
3.可重复读 4
4.串行化(不可以并发)8
-->
<property name="connection.isolation">2</property>
<property name="hibernate.format_sql">true</property>
<!-- 表自动生成 :
update没有就建表,有表没影响保留原来的数据,
create每次都会建表,会删除以前的数据,
create-drop,服务器关闭删除表-->
<property name="hibernate.hbm2ddl.auto">update</property> <!-- 二级缓存配置 -->
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property> <!-- 连接池 C3P0配置 -->
<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.timeout">120</property>
<property name="automaticTestTable">Test</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">120</property>
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="c3p0.testConnectionOnCheckout">true</property>
<property name="c3p0.idleConnectionTestPeriod">18000</property>
<property name="c3p0.maxIdleTime">25000</property>
<property name="c3p0.idle_test_period">120</property> <!-- 映射类配置文件 -->
<mapping resource="ni/jun/yang/bean/user.hbm.xml"></mapping>
<mapping resource="ni/jun/yang/bean/Orders.hbm.xml"></mapping>
<mapping resource="ni/jun/yang/bean/Address.hbm.xml"></mapping>
<mapping resource="ni/jun/yang/bean/Customer.hbm.xml"></mapping>
<class-cache usage="read-write" class="ni.jun.yang.bean.User"/>
</session-factory>
</hibernate-configuration>

3.工具类读取配置文件,获取SessionFactory对象:

package ni.jun.yang.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtil {
private static SessionFactory sessionFactory; public HibernateUtil() { }
public static SessionFactory getSessionFactory(){
if(sessionFactory == null){
Configuration cfg =new Configuration();
cfg.configure();//读取配置文件
sessionFactory = cfg.buildSessionFactory();
}
return sessionFactory;
} }

4.session类中提供了一系列的crud操作:

4.1 添加:

public void Add(User user) {
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction(); //开启事务
session.save(user);
ts.commit(); //提交事务
session.close();
}

4.2 删除:

public void delete(User user) {
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction(); //开启事务
session.delete(user);
ts.commit(); //提交事务
session.close(); }

4.3 修改:

public void update(User user) {
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction();//开启事务
session.update(user);
ts.commit(); //提交事务
session.close(); }

4.4 查询:

public User select(int id) {
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction();
User user = session.get(User.class, id);
user.setUserPsw("321");
ts.commit();
session.close();
return user;
}

4.5 查询所有,结合hql语句

public List<User> selectAll() {
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction();
Query<User> q=session.createQuery("from User");
// Query<User> q=session.createQuery("from User where userName =:userName");//占位符
// q.setString("userName", "zhangsan"); //占位符赋值 List<User> lists = q.list();
return lists;
}

hibernate入门-基本配置及简单的crud操作的更多相关文章

  1. Hibernate入门3.配置映射文件深入

    Hibernate入门3.配置映射文件深入 2013.11.27 前言: 之前的两节是在Java项目中如何使用hibernate,并且通过一个简单地项目实践,期间有很多的错误,一般都是因为配置包的问题 ...

  2. 【SSH三大框架】Hibernate基础第五篇:利用Hibernate完毕简单的CRUD操作

    这里利用Hibernate操作数据库完毕简单的CRUD操作. 首先,我们须要先写一个javabean: package cn.itcast.domain; import java.util.Date; ...

  3. ASP.NET Core MVC+Layui使用EF Core连接MySQL执行简单的CRUD操作

    前言: 本章主要通过一个完整的示例讲解ASP.NET Core MVC+EF Core对MySQL数据库进行简单的CRUD操作,希望能够为刚入门.NET Core的小伙伴们提供一个完整的参考实例.关于 ...

  4. 8天掌握EF的Code First开发系列之2 简单的CRUD操作

    本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 创建控制台项目 根据.Net中的类来创建数据库 简单的CRUD操作 数据库模式更改介绍 本章小结 本人的实验环境 ...

  5. Spring Data MongoDB 一:入门篇(环境搭建、简单的CRUD操作)

    一.简介 Spring Data  MongoDB 项目提供与MongoDB文档数据库的集成.Spring Data MongoDB POJO的关键功能区域为中心的模型与MongoDB的DBColle ...

  6. Springboot项目搭建(1)-创建,整合mysql/oracle,druid配置,简单的CRUD

    源码地址:https://github.com/VioletSY/article-base 1:创建一个基本项目:https://blog.csdn.net/mousede/article/detai ...

  7. elasticsearch入门(简单的crud操作)

    记录一下,elasticsearch从创建索引到插入数据的一个crud操作. 一.创建索引 curl -XPUT "http://192.168.99.1:9200/productindex ...

  8. 概述hibernate入门安装配置

    1.jdbc连接的优缺点 JDBC的优点 直接底层操作,提供了很简单.便捷的访问数据库的方法,跨平台性比较强.灵活性比较强,可以写很复杂的SQL语句. JDBC的缺点 1).因为JAVA是面向对象的, ...

  9. Hibernate入门案例配置以及增、删、改、查看

    享受痛苦就是走向成功的第一步. 一.创建一个项目(lib里面是需要的夹包小奶瓶要导包) 二.书写大配置文件 大配置文件必须放置在项目根目录(专业classpath下):界定:就是src 1名称:hib ...

随机推荐

  1. onDraw(canvas)和dispatchDraw(canvas)方法

    绘制VIew本身的内容,通过调用View.onDraw(canvas)函数实现 绘制自己的孩子通过dispatchDraw(canvas)实现 View组件的绘制会调用draw(Canvas canv ...

  2. Digogo ugdx文件的制作

    The openplatform source code is in old IT FTP server at "vte/KCD/20150814/openplatform_wallace. ...

  3. asp.net 下的中文分词检索工具 - jieba.net

    jieba是python下的一个检索库, 有人将这个库移植到了asp.net 平台下, 完全可以替代lucene.net以及盘古分词的搭配 之所以写这个, 其实是因为昨天面试时, 被问到网站的关键字检 ...

  4. 关于iOS9 HTTP不能正常使用的解决方法

    在工程的info.plist文件中添加NSAPPTransportSecurity类型为Dictionary,在NSAPPTransportSecurity下添加NSAllowsArbitraryLo ...

  5. Django时区设置的郁闷

    第一次在windows下看到这个设置的时候,就设置成Ubuntu上时区设置的字符串“Asia/Shanghai”,结果报错通不过,最后记不清楚从哪儿查的,改成GMT+8. 最近把应用放到Linux上做 ...

  6. Android Data Binding使用笔记

    说在前面:先来三个文档,官网文档:https://developer.Android.com/topic/libraries/data-binding/index.html 官网文档的汉化版:http ...

  7. Flipping Parentheses~Gym 100803G

    Description A string consisting only of parentheses '(' and ')' is called balanced if it is one of t ...

  8. 五分钟学会centos配置gitlab

    下载gitlab 亲测: centos6.5 安装依赖包: : yum install curl policycoreutils policycoreutils-python openssh-serv ...

  9. 单片机开发——03工欲善其事必先利其器(AD软件安装破解)

    在单片机开发中,有了Keil的程序编程,Protues的模拟仿真,那么问题来了,怎么去进行电路图设计以及硬件调试呢?此刻就必须引入本文的Altium Designer (下文简称AD)安装与破解.在硬 ...

  10. ASCII、 Unicode 和 UTF8

    ASCII: 英文字母与数字编号的一一对应.每个英文字母对应一个编号.范围0~127 Unicode: 全世界所有语言中字符与数字编号的一一对应.也即为存在的每个字符指定一个唯一的编号.范围为0~0x ...