Hibernate初步部署

下载全套文件: hibernate-release-4.1.7.Final.zip

目录结构

Documentation文件夹下是开发帮助文档

Lib文件夹是开发使用的库,其中该文件夹下面的required目录是开发时必须导入的JAR文件;

Project文件夹是项目源码文件

JDBC与Hibernate的比较:

Hibernate的初步配置部署:

1.     创建web项目

2.     添加响应需要的Hibernate的jar包

3.     创建Java Bean业务实体类

4.     创建实体类映射的配置文件:**.hbm.xml

5.     创建Hibernate的配置文件hibernate.cfg.xml

6.     创建测试类测试hibernate是否配置成功

实体类:UserInfo.java

  1. public class UserInfo
  2. {
  3. private int userid;
  4. private String userName;
  5. private String userPwd;
  6. private Date birthday;
  7. //省略了属性各种get和set方法
  8. //创建含有id的构造函数
  9. public UserInfo(int id)
  10. {
  11. this.userid=id;
  12. }
  13. public UserInfo(int userid, String userName, String userPwd, Date birthday)
  14. {
  15. super();
  16. this.userid = userid;
  17. this.userName = userName;
  18. this.userPwd = userPwd;
  19. this.birthday = birthday;
  20. }
  21. //无参的构造函数是必须要有的
  22. public UserInfo()
  23. {
  24. }
  25. }

实体类的配置文件UserInfo.hbm.xml

(配置文件尽量和实体类名字去的一致方便管理和实体类放在同一个包中)

  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/HibernateMapping DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping package="entity">  //package包指定实体类的包
  6. <class name="UserInfo" table="luser">
  7. //name指定实体类名  table为数据库中实体类对应的表名如果没有指定就和类名一致
  8. <id name="userid">
  9. <generator class="native"/>
  10. </id>
  11. //id标识主键的字段 class=native标识自增长
  12. <property name="userName" column=”name” />
  13. //property指定属性的字段,column可以指定数据库中对应字段的名称,如果没有就和实体类的属性名一致
  14. <property name="userPwd" />
  15. <property name="birthday" />
  16. </class>
  17. </hibernate-mapping>

Hibernate的配置文件hibernate.cfg.xml

  1. <!DOCTYPE hibernate-configuration PUBLIC
  2. "-//Hibernate/HibernateConfiguration DTD 3.0//EN"
  3. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  4. <hibernate-configuration>
  5. <session-factory>
  6. <!-- 显示执行的sql语句 -->
  7. <property name="show_sql">true</property>
  8. <!-- 格式化sql语句 -->
  9. <property name="format_sql">true</property>
  10. <!-- 配置数据库各种数据 -->
  11. <!-- 配置数据库本地语言 -->
  12. <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
  13. <!-- 数据库驱动 -->
  14. <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
  15. <!-- 数据库url -->
  16. <property name="hibernate.connection.url">jdbc:oracle:thin:@192.168.3.252:1521:orcl</property>
  17. <!-- 配置数据库的用户名和密码 -->
  18. <property name="hibernate.connection.username">bam1</property>
  19. <property name="hibernate.connection.password">bam1</property>
  20. <!-- 设置数据定义语言操作的方式 -->
  21. <property name="hibernate.hbm2ddl.auto">update</property>
  22. <!-- 加载对象关系映射文件 -->
  23. <mapping resource="entity/UserInfo.hbm.xml"/>
  24. </session-factory>
  25. </hibernate-configuration>

测试类Test.java

添加一条数据:

  1. public static void add()
  2. {
  3. //第一步:读取Hibernate的配置文件  hibernamte.cfg.xml文件
  4. Configurationcon=new Configuration().configure();
  5. //第二步:创建服务注册构建器对象,通过配置对象中加载所有的配置信息
  6. ServiceRegistryBuilderregbulider=newServiceRegistryBuilder().applySettings(con.getProperties());
  7. //创建注册服务
  8. ServiceRegistryreg=regbulider.buildServiceRegistry();
  9. //第三步:创建会话工厂
  10. SessionFactorysessionFactory=con.buildSessionFactory(reg);
  11. //第四步:创建数据操作会话
  12. Sessionsession=sessionFactory.openSession();
  13. //创建对象
  14. */
  15. UserInfohanhan=new UserInfo();
  16. hanhan.setUserName("hanhan313");
  17. hanhan.setUserPwd("123");
  18. hanhan.setBirthday(new Date());
  19. /*
  20. //创建事物
  21. Transactiontran=session.beginTransaction();
  22. //保存数据
  23. session.save(hanhan);
  24. //提交事物
  25. tran.commit();
  26. //关闭对话
  27. session.close();
  28. }

查询一条数据:

创建了session回话后

//查询id为10的userinfo的用户信息

UserInfouser=session.get(UserInfo.class,10);

更新一条数据:

首先查询出数据

UserInfo user=session.get(UserInfo.class,10);

再对user进行数据修改后

再通过获取到session回话

session.update(user)

删除一条数据:

删除数据时将需要删除的id数据包装成对象

比如:

UserInfouser=new UserInfo();

User.setUserId(10);

session.delete(user);  //删除时就会自动获取到user中id进行删除

hibernate的流程:

持久化JAVA类必须遵循的原则

 

1、为类的持久化字段声明访问方法(get/set),Hibernate对JavaBeans风格的属性实行持久化。

2、实现一个默认的构造方法,这样的话Hibernate就可以使用Constructor.newInstance()方法来实例化对象。

3、如果是集合类型的属性,它的类型必须定义为集合的接口,例如:List、Set

4、提供一个标识属性(Identifier property),如果没有该属性,一些功能不起作用,比如:级联更新,session.saveOrUpdate()。

对象的状态:

瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象。

持久(persistent):数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交;持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到)。

脱管(detached):数据库中有数据与之对应,但当前没有session与之关联;托管对象状态发生改变,hibernate不能检测到。

时间: 2024-08-29 05:41:06

Hibernate初步部署的相关文章

Hibernate技术(一)--Hibernate初步

Hibernate初步 ORM:在编写程序时,处理数据采用面向对象的方式,而保存数据却以关系型数据库的方式,因此需要一种能在两者之间进行转换的机制.这种机制称为ORM,ORM保存了对象和关系型数据库表的映射信息. Hibernate框架搭建 Hibernate3JAR包引入: antlr-2.7.6.jar 语言转换工具,实现HQL到SQL的转换 commons-collections-3.1.jar dom4j-1.6.1.jar 读写XML文件 hibernate3.jar 核心类库 hib

hibernate初步2

Hibernate级联设计 数据库表之间的关系(主要关系有一对多.一对一.多对多)主要是从如下三个方面体现出来: 1.表体设计 2.实体类的设计 3.配置文件 以下是一些重要级联设计参数属性介绍: cascade级联操作,默认值为 none 1.none:只做级联查询 2.save-update:级联查询,级联插入和级联更新 3.delete:级联查询,级联删除 4.all:级联查询,级联插入,级联更新和级联删除 5.all-delete-orphan:基础主从表记录关系时,会把从表对应的记录一

hibernate初步

package cn.bdqn.test; import java.io.Serializable; import java.util.Iterator; import java.util.List; import java.util.Scanner; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transac

Kafka集群部署

一. 关于kafka Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素. 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决. 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案.Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群机来提供实时的消费. 关于Kafka的

Aria2 使用手札(简易部署 + 快速进阶)

没错,又是受够了迅雷.旋风的各种奇葩减速(哥哥我还买了了VIP!),IDM 对协议支持又太少还有事没事提示你不是正版三天两头闹着要更新.于是我想起来之前看到过的 Aria2,虽然之前也只是略有耳闻,但听名字就很牛掰的样子.下面文章以 Windows 系统为基础,不过基本内容都是通用的,Linux 用户也可以看下. 认识 Aria2 Aria2 是一个轻量级多协议和多源命令行下载实用工具.它支持 HTTP / HTTPS, FTP, SFTP, bt 和 Metalink.通过内置 Aria2 可

部署分布式kafka集群

一.kafka.zookeeper分布式集群简介 一句话概括kafka: kafka是一个具备很强容错能力和实时处理能力的分布式流数据平台. Kafka的应用场景: kafka可在以下场景中应用:基于流数据的发布订阅消息系统.基于流数据的高效异步通信中间件.基于流数据的高可用分布式存储:可以替代传统的消息队列和企业级消息系统: 二.所需软件环境: 三台Redhat6.6主机 kafka_2.10-0.9.0.0.tgz . zookeeper-3.4.8.tar.gz .jdk-8u131-li

Hibernate二次学习一----------搭建Hibernate

? 版权声明:本文为博主原创文章,转载请注明出处 [TOC] 1. 项目结构 本项目使用maven进行项目管理,搭建一个简单的Hibernate框架需要四步. 本项目未使用注解方式进行搭建 1.1 pom.xml 使用maven引入依赖jar包,若未使用maven,则自己下载所需jar包放到lib目录下 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001

基于kubeadm部署kubernetes集群(一)

一.主机规划 角色名称 配置 域名 IP地址 master 2C8G/4G master.example.com 192.168.0.1 node1 2C4G/2G node1.example.com 192.168.0.2 node2 2C4G/2G node2.example.com 192.168.0.3 二.软件要求 操作系统版本: CentOS Linux release 7.3.1611 (Core) Docker版本:1.13.1, build 07f3374/1.13.1 Kub

linux常用命令加实例大全

目  录引言    1一.安装和登录    2(一)    login    2(二)    shutdown    2(三)    halt    3(四)    reboot    3(五)    install    4(六)    mount    4(七)    umount    6(八)    chsh    6(九)    exit    7(十)    last    7(十一)    动手练习    7二.文件处理    9(一)    file    9(二)    mkd