IDEA 下新建 Hibernate 项目
Hibernate 概述
什么是 Hibernate
- 一个 Java 领域的持久化框架
- 一个 Java 领域的ORM 框架
什么是持久化
- 持久化是指把对象永久保存到数据库中
- 持久化包括和数据库相关的各种操作(增、删、改、查)
什么是 ORM
- ORM 是指对象关系映射(Object/Relation Mapping)
- ORM 将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转换为对对象的操作
- 面向对象概念中的类对应着面向关系概念中的表,对象对应着表的行,属性对应着表的列(字段)
IDEA 下 Hibernate 开发步骤
- 创建 Hibernate 项目

- 在数据库下创建好对应的数据表
- IDEA 下连接对应的数据库


- IDEA 下反向生成实体类和对象-关系映射文件(*.hbm.xml)


- 创建 Hibernate 项目
完善 hibernate.cfg.xml 文件

如上所示为 IDEA 下自动生成的实体类以及配置文件,我们需要在配置文件中加入其他配置,如下(hibernate.cfg.xml)
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--数据库连接的基本信息-->
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate01</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">zy961029</property> <!--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> <property name="c3p0.max_size">20</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_statements">5</property>
<property name="c3p0.timeout">5000</property>
<property name="c3p0.acquire_increment">5</property> <!--引入 hbm.xml 文件-->
<mapping resource="com/myself/hibernate/test/NewsEntity.hbm.xml"></mapping>
<mapping resource="com/myself/hibernate/many2one/test/CustomerEntity.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Main 类解析(IDEA 新建 Hibernate 项目生成 Main 类的解析)
后面我们对数据库的一系列操作都是在此类基础上进行,为了方便测试我们会将该类进行优化
public class Main {
private static final SessionFactory ourSessionFactory;
// hibernate 4.0 之后新添加的对象,hibernate 的任何配置和服务都需要在该对象中注册后方才有效
private static final ServiceRegistry serviceRegistry; static {
try {
Configuration configuration = new Configuration();
configuration.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
ourSessionFactory = configuration.buildSessionFactory(serviceRegistry);
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
// 从 SessionFactory 获取一个 session 对象,相当于 JDBC 中的 Connection 对象
public static Session getSession() throws HibernateException {
return ourSessionFactory.openSession();
} public static void main(final String[] args) throws Exception {
final Session session = getSession();
// 开启事务。事务代表一次原子操作,它具有数据库事务的概念。所有持久层都应该在事务管理下进行,即使是只读操作
Transaction transaction = session.beginTransaction();
/*
* 在这里对数据库进行增、删、改、查操作
* */
// 提交事务
transaction.commit();
// 关闭 Session 以及 SessionFactory
session.close();
ourSessionFactory.close();
}
}
Hibernate 配置文件 hbm2ddl.auto 属性: 由 java 代码生成数据库脚本, 进而生成具体的表结构. 。取值 create | update | create-drop | validate
- create : 会根据 .hbm.xml 文件来生成数据表, 但是每次运行都会删除上一次的表 ,重新生成表, 哪怕二次没有任何改变
- create-drop : 会根据 .hbm.xml 文件生成表,但是SessionFactory一关闭, 表就自动删除
- update : 最常用的属性值,也会根据 .hbm.xml 文件生成表, 但若 .hbm.xml 文件和数据库中对应的数据表的表结构不同, Hiberante 将更新数据表结构,但不会删除已有的行和列
- validate : 会和数据库中的表进行比较, 若 .hbm.xml 文件中的列在数据表中不存在,则抛出异常
对于IDEA 中 hbm2ddl.auto 属性应用还有点没搞清楚,还望大神指点!
IDEA 下新建 Hibernate 项目的更多相关文章
- Intellij Idea 15 下新建 Hibernate 项目以及如何添加配置
1.说明:Idea 下,项目对应于 Eclipse 下的 workspace,Module 对应于 Eclipse 下的项目.Idea 下,新添加的项目既可以单独作为一个 Project,也可以作为一 ...
- Eclipse下新建Maven项目、自动打依赖jar包
当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个本地仓库,但可以配置访 ...
- eclipse下新建maven项目
eclipse下新建maven项目 1.1下载maven安装包 进入Maven官网的下载页面:http://maven.apache.org/download.cgi,如下图所示:\ 选择当前最新版本 ...
- 在windows下新建maven项目
1.拷贝settings到.m2文件下 2.修改文件 3.新建Project项目 4.转换为maven项目 config下转换 5.拷贝pom文件 6.新建目录 src/main/java src/m ...
- 096实战 在windows下新建maven项目
1.拷贝settings到.m2文件下 2.修改文件 3.新建Project项目 4.转换为maven项目 config下转换 5.拷贝pom文件 <project xmlns="ht ...
- linux下新建svn项目
1.新建项目svnadmin create /mnt/fbdisk/svn/newproject 2.会在svn下面建立newproject目录total 24drwxr-xr-x 2 root ro ...
- IDEA下新建Vue项目
1.首先需要安装nodeJS,并配置全局环境变量. 2.在IDEA中新建一个空的project 3.在setting中配置JavaScript的语言版本为6 在file types的html中添加.* ...
- Eclipse下Maven新建Web项目index.jsp报错完美解决(war包)
Eclipse下Maven新建Web项目步骤 1. 2. 3. 4. 5. 问题描述 最近用eclipse新建了一个maven项目,结果刚新建完成index.jsp页面就报错了,先把错误信息贴出来看看 ...
- eclipse新建web项目,发布 run as 方式和 new server然后添加项目方式。 后者无法自动编译java 成class文件到classes包下。
eclipse新建web项目,发布 run as 方式和 new server然后添加项目方式. 后者无法自动编译java 成class文件到classes包下. 建议使用run as - run ...
随机推荐
- Hessian源码分析--总体架构
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单.快捷.采用的是二进制RPC协议,因为采用的是二进制协 ...
- OJ题:句子逆转
将一个英文语句以单词为单位逆序排放.例如"I am a boy",逆序排放后为"boy a am I"所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含 ...
- 敏捷测试(1)--TDD概念
题记 本系列笔记将从测试人员的角度,总结在百度两年来的测试经验,记录一个完整的基于敏捷流程的验收测试全过程,分享在测试过程中的一些知识和经验,以及自己的一些理念.总结自己,也希望对大家有益. 概念 验 ...
- 5、使用Libgdx设计一个简单的游戏------雨滴
(原文:http://www.libgdx.cn/topic/49/5-%E4%BD%BF%E7%94%A8libgdx%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E7% ...
- JAVA之旅(六)——单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖
JAVA之旅(六)--单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖 java也越来越深入了,大家加油吧!咱们一步步来 一.单例设计模式 什么是设计模式? JAVA当中有 ...
- 图像检索:CEDD(Color and Edge Directivity Descriptor)算法
颜色和边缘的方向性描述符(Color and Edge Directivity Descriptor,CEDD) 本文节选自论文<Android手机上图像分类技术的研究>. CEDD具有抽 ...
- MTK6577+Android之Camera驱动
MTK6577+Android之Camera驱动 <MTK安卓平台的Camera效果在线调试> 1. Camera拍照相关概念 1.1 ISP isp--(Image Signa ...
- Android实训案例(六)——四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听
Android实训案例(六)--四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听 Android中四大组件的使用时重中之重,我这个阶段也不奢望能把他 ...
- MTK Android添加驱动模块
1 [编写linux驱动程序] 1.1 一.编写驱动核心程序 1.2 二.配置Kconfig 1.3 三.配置Makefile 1.4 四.配置系统的autoconfig 1.5 五.编译 2 [编写 ...
- Linux常用命令(第二版) --权限管理命令
权限管理命令 1.chmod[change the permissions mode of a file] : /bin/chmod 语法: chmod [{ugo}{+-=}{rwx}] [文件或目 ...