框架来说主要是需要写大量的配置文件,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. SharePoint2010 -- ECMAScript客户端模型简单示例

    ECMAScript客户端模型,是SharePoint2010推出的三种客户端模型".NET托管"."ECMAScript"."Sliverlight ...

  2. SVN中更改连接用户

    Eclipse中安装了SVN插件,当连接到SVN服务器后,便无法从客户端更改连接帐号 百度一下,也就知道 查看Eclipse中使用的是什么SVN Interface,位置在 windows > ...

  3. python lock, semaphore, event实现线程同步

    lock 机制不管你是java, C#, 还是python都是常用的线程同步机制, 相比较C# 的锁机制, python的加锁显得比较简单, 直接调用threading 标准库的lock 就可以了. ...

  4. 智能合约最佳实践 之 Solidity 编码规范

    每一门语言都有其相应的编码规范, Solidity 也一样, 下面官方推荐的规范及我的总结,供大家参考,希望可以帮助大家写出更好规范的智能合约. 命名规范 避免使用 小写的l,大写的I,大写的O 应该 ...

  5. dp,px,pt,sp 的区别 以及dp 和 px 互转

    dp = dip : device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不 ...

  6. unity零基础开始学习做游戏(五)看看你的完成度,进度条了解一下?

    -------小基原创,转载请给我一个面子 上回书说道,英雄和魔王都做完了,子弹也能发射了,就是不知道啥时候能干死魔王.那小基得做个血条来展示一下,他离死不远了(•౪• ) 其实血条也可以看作是进度条 ...

  7. 爬虫之urllib包

    urllib简介 简介 Python3中将python2.7的urllib和urllib2两个包合并成了一个urllib库 Python3中,urllib库包含有四个模块: urllib.reques ...

  8. C程序员眼里的Python

    注释 Phython的注释和C语言非常不同,第一种 #开头的注释,类似于C的//开头,而"""对 包围注释,类似于C的/* */,以及xml类的<!--    -- ...

  9. 基于DP的矩阵连乘问题

    当多个连续可乘矩阵做乘法时,选择正确的做乘顺序可以有效减少做乘法的次数,而选择的方法可以很容易的通过DP实现. 原理就是对于每一个所求矩阵,搜索所有可以相乘得到它的方法,比较它们的消耗,选取最小值作为 ...

  10. SQL转化为MapReduce的过程

    转载:http://www.cnblogs.com/yaojingang/p/5446310.html 在了解了MapReduce实现SQL基本操作之后,我们来看看Hive是如何将SQL转化为MapR ...