hibernate 简单入门 配置
hibernate两个配置文件,一个是类和表的映射关系文件,一个是数据库连接的配置文件
类和表的映射关系
<?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 auto-import="false">
<!--
class:将持久化对象(javabean)关联数据库表
* name:持久化对象的名称(包名)
* table:表名称
-->
<class name="com.itheima.a_primer.Customer" table="a_customer">
<!--
id:主键映射(必须要有主键)
* <generator class="increment"></generator>:主键生成策略
* increment:自增长 -->
<id column="id" name="id" type="integer">
<generator class="increment"/>
</id>
<!--
property:将持久化对象对象(javabean)中的属性映射数据库表的字段
* name:持久化对象的属性名称
* type:表示Hibernate的类型(用来将持久化对象的属性类型,映射成数据库所支持的类型)
* 写成:java.lang.String
* 写成:string
* column:数据库表列的名字
-->
<property generated="never" lazy="false" name="name" type="string">
<column name="name" sql-type="varchar(50)"/>
</property>
<property column="age" generated="never" lazy="false" name="age" type="integer"/>
<property column="des" generated="never" lazy="false" name="des" type="string"/>
</class>
</hibernate-mapping>
连接配置
<?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/itheima0309?useUnicode=true&characterEncoding=utf8</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property> <!-- 操作Hibernate的配置 -->
<!--
方言:hibernate在执行查询的时候,指定哪种数据库来执行查询,因为每种数据库执行的查询是不同的
-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!--
映射文件to数据库表
* 指定程序运行时是否在数据库自动生成数据表
* create:如果数据库中没有表,可以创建表,但是每次操作都会先删除表,再创建表
* none:默认:不能通过hibernate的映射文件不能创建表,有表会直接操作
* update:如果数据库中没有表,可以创建表,如果有表,就直接操作,不需要创建表
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!--
在控制台显示sql语句(方便我们查看hibernate底层输出的sql)
-->
<property name="hibernate.show_sql">true</property> </session-factory>
</hibernate-configuration>
代码操作
实体类遵循javabean规范
package com.itheima.a_primer;
public class Customer {
private Integer id;//主键字段
private String name;
private Integer age;
private String des;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getDes() {
return des;
}
public void setDes(String des) {
this.des = des;
}
}
测试存储
package com.itheima.a_primer; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test; public class CopyOfApp { @Test
public void save(){
//加载hibernate.cfg.xml和Customer.hbm.xml
Configuration configuration = new Configuration();
configuration.configure();//默认加载classpath路径下(src下)的hibernate.cfg.xml
/**
* 方案一:要求:Customer.java和Custoemr.hbm.xml要放置到同一个包下,而且名称要相同
* configuration.addClass(Customer.class)
* 等同于:在hibernate.cfg.xml中配置:
* <mapping class="com.itheima.a_primer.Customer"/>
*
* 方案二:如果Customer.java和Custoemr.hbm.xml不放在同一个包下
* configuration.addResource("com/itheima/a_primer/Customer.hbm.xml");
* 等同于:在hibernate.cfg.xml中配置:
* <mapping resource="com/itheima/a_primer/Customer.hbm.xml"/>
*/
configuration.addClass(Customer.class);//加载Customer.java文件(要求:Customer.java和Custoemr.hbm.xml要放置到同一个包下,而且名称要相同)
//创建SessionFactory类,这是hibernate操作数据库的工厂,相当于jdbc中的连接池
SessionFactory sessionFactory = configuration.buildSessionFactory();
//创建Session类,这是hibernate操作数据库的核心类,相当于jdbc中的连接(connection)
Session session = sessionFactory.openSession();
//开启事务
Transaction tr = session.beginTransaction(); //操作对象的过程就是操作数据库表的实现
Customer c = new Customer();
c.setName("黄蓉");
c.setAge(18);
c.setDes("女侠"); //保存
session.save(c);
//提交事务
tr.commit();
session.close();
}
}
package com.itheima.a_primer; import java.util.List; import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test; public class App { static SessionFactory sf = null; static{
//加载hibernate.cfg.xml和Customer.hbm.xml
Configuration configuration = new Configuration();
configuration.configure("com/itheima/a_primer/hibernate.cfg.xml");
configuration.addClass(Customer.class);
sf = configuration.buildSessionFactory();
} /**保存*/
@Test
public void save(){
Session session = sf.openSession();
//开启事务
Transaction tr = session.beginTransaction(); //操作对象的过程就是操作数据库表的实现
Customer c = new Customer();
c.setName("黄老邪");
c.setAge(68);
c.setDes("侠"); //保存
session.save(c);
//提交事务
tr.commit();
session.close();
} /**更新*/
@Test
public void update(){
Session session = sf.openSession();
//开启事务
Transaction tr = session.beginTransaction(); //操作对象的过程就是操作数据库表的实现
Customer c = new Customer();
c.setId(2);
c.setName("蓉儿");
c.setAge(18);
c.setDes("修改后"); //更新
session.update(c);
//提交事务
tr.commit();
session.close();
} /**8.通过id删除客户信息*/
@Test
public void delete(){
Session session = sf.openSession();
//开启事务
Transaction tr = session.beginTransaction(); //操作对象的过程就是操作数据库表的实现
Customer c = new Customer();
c.setId(2); //删除
session.delete(c);
//提交事务
tr.commit();
session.close();
} /**9.通过id查询客户信息*/
@Test
public void findObjectByID(){
Session session = sf.openSession();
//开启事务
Transaction tr = session.beginTransaction(); //操作对象的过程就是操作数据库表的实现
Customer c = (Customer) session.get(Customer.class, 3);//或者session.load()
System.out.println(c.getId()+" "+c.getName());
//提交事务
tr.commit();
session.close();
} /**10. 查询所有的客户信息*/
@Test
public void findAll(){
Session session = sf.openSession();
//开启事务
Transaction tr = session.beginTransaction(); //操作对象的过程就是操作数据库表的实现(面向对象的编程)
//HQL语句:hql语句,操作持久化对象和对象中的属性 select c from Customer c === from Customer c
//SQL语句:sql语句,操作数据表和字段,select * from a_customer
String hql = "from Customer c";
Query query = session.createQuery(hql);
List<Customer> list = query.list();
if(list!=null && list.size()>0){
for(Customer c:list){
System.out.println(c.getId()+" "+c.getName());
}
}
//提交事务
tr.commit();
session.close();
}
}
hibernate 简单入门 配置的更多相关文章
- MyCAT简单入门配置
MyCAT简单入门配置 安装jdk 建议1.7以上 安装mysql 安装MyCAT Mycat 源码:https://github.com/MyCATApache/Mycat-Server Mycat ...
- hibernate框架入门配置
1.新建一个项目(可以是java项目,也可以是webapp) 2.导入jar包,包括日志,mysql驱动,必备request包,jpa配置规范包 3.创建实体类 1.创建数据库,使用hibernate ...
- hibernate简单入门教程(一)---------基本配置
应用级别所以很粗浅 首先介绍一下hibernate框架: 1.优秀的持久化(通俗讲把内存上的短时间运行信息存储在持久化硬盘上)框架. 2.作用于持久层,因为没什么侵入性,所以同样适用于其他层面上的存储 ...
- 【hibernate】<第一节>hibernate简单入门
所需工具: ide:eclipse or myeclipse jdk:1.7 jar包:hibernate-distribution-3.6.0.Final 和对应mysql的驱动类(对应jar包如图 ...
- 框架之 hibernate简单入门
hibernate框架的搭建 Hibernate框架的概述 1. Hibernate框架的概述 * Hibernate称为 * Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JD ...
- 3分钟4个步骤超级简单入门配置lamp
按照我下面的推荐博客进行3步安装,最后进行一步测试就完成了.环境:我的环境是在windows10中安装的VMware中安装的Ubuntu虚拟机,Windows8,7应该是一样的测试:分别用localh ...
- hibernate多对多 一对多 及简单入门 主键生成策略
Hibernate简单使用 入门 通过hibernate的 一对多 多对多轻松看懂hibernate配置 (不使用注解) hibernate对jdbc访问数据库的代码进行轻量级封装,简化重复代码 减少 ...
- hibernate框架的简单入门
1.什么是框架 框架是一个半成品,框架帮我们实现了一部分的功能. 2.使用框架的最大好处 使用框架的最大好处就是,少写一部分代码但仍能实现我们所需要实现的功能. 3.什么是hiberbnate框架 ( ...
- Hibernate从入门到精通(七)多对一单向关联映射
上次的博文Hibernate从入门到精通(六)一对一双向关联映射中我们介绍了一下一对一双向关联映射,本次博文我们讲解一下多对一关联映射 多对一单向关联映射 多对一关联映射与一对一关联映射类似,只是在多 ...
随机推荐
- PostBack
PostBack 字面意义 Post提交 Back回来. 提交回来. 1. AutoPostBack 服务器控件需要设置 AutoPostBack="true" 后才会提交服务器. ...
- 数据库索引与b+树
数据库索引详解 索引 当我们在设计数据库的时候,对表的一些属性有时会加上索引,但索引为什么能提高检索速率呢?是不是用了索引就一定可以提高效率呢?不同索引之间有什么区别呢?搞懂这些问题是灵活运用索引的必 ...
- ZeroSSL,支持多域名的在线 Let's Encrypt SSL 证书申请工具
前言: 微信需要ssl证书,很多网站都有免费一年的证书:免费一年的证书叫做单域名证书,iis没办法配置多个子站点443端口:我有很多客户需要用我的的域名,同一个域名配置多个ssl,或者支持多个子域名: ...
- IE11下使用fixed定位时鼠标滚动不平滑
很久不用IE了,近期做兼容性测试发现一个fixed定位的问题,当元素使用fixed定位时,其应该不随页面滚动,在chrome/firefox/edge下都很完美,元素完全不动,但是使用IE11时,如果 ...
- Service Fabric 用 Powershell 部署应用到本地
前置说明 安装 Service Fabric SDK,会在本机 C:\Program Files\Microsoft SDKs\Service Fabric\Tools\PSModule\Servic ...
- OO 抽象类与接口的区别
抽象类与接口的区别 抽象类与接口的区别 一.抽象类:(抽象类适用于同一系列,并且有需要继承的成员) 概念: 1.使用abstract修饰: 2.抽象类中可以包含抽象方法: 3.抽象类只能被子类继承:( ...
- Codeforces Round #549 (Div. 2)A. The Doors
A. The Doors time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- 洛谷P2764 最小路径覆盖问题(最大流)
传送门 先说做法:把原图拆成一个二分图,每一个点被拆成$A_i,B_i$,若原图中存在边$(u,v)$,则连边$(A_u,B_v)$,然后$S$对所有$A$连边,所有$B$对$T$连边,然后跑一个最大 ...
- 微信小程序HTTPS - cenos apache 下安装SSL证书
1.yum install mod_ssl 2.接下来,我们需要创建一个新目录,我们将存储服务器密钥和证书 mkdir /root/ssl 3.vi /etc/httpd/conf.d/ssl.con ...
- 决策树--Python
决策树 实验集数据: #coding:utf8 #关键词:决策树(desision tree).特征选择.信息增益(information gain).香农熵.熵(entropy).经验熵(H(D)) ...