hibernate入门配置及第一个hibernate程序
学习了hibernate后就想先给大家分享一下它的配置方法:
jar包导入
一、数据库表的创建
二、开启hibernate配置
编译器:eclipse 数据库:mysql
1.创建第一个xml文件
在类路径下(src),hibernate默认是读取类路径下的文件的,创建xml文件: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>
<!-- 这是Mysql的配置信息,name值均是hibernate提供的固定的值 。Oracle并非是这样的-->- <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
- <property name="hibernate.connection.username">root</property>
- <property name="hibernate.connection.password">123456</property>
- <property name="hibernate.show_sql">true</property>
- <!-- 方言,使用的是哪个数据库 -->
- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
- <!-- 这个是映射文件的路径 -->
- <mapping resource="com/xxx/pojo/User.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd,这个是hibernate对于xml文件的约束,只能使用hibernate规定的标签
将约束引入eclipse中,根据给定的路径,将路径拷贝到浏览器的地址栏,进行dtd文件的下载(此路径就是dtd文件的下载路径,直接复制即可)
下载之后是:
接下来,打开eclipse--->window--->Preferences,搜索xml,找到XML Catalog,点击Add,Location是你本机上下载的dtd文件的路径,Key type选择是URI,Key是xml文件中的约束路径,点击Ok就可以了
2.创建一个实体类User(com.xxx.pojo)
实体类中的属性必须和数据库中表的字段相对应(属性名和字段名称可以不一致,但是字段类型和数量必须一致)。
3.在实体类包下创建第二个配置文件:User.hbm.xml。
此配置文件,格式是xxx.hbm.xml,xxx可以改变,但必须是实体类的类名,后面的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>
- <!-- name:实体类路径 table:表名 -->
- <class name="com.xxx.pojo.User" table="user">
- <id name="id" column="id">
- <!--
- 设置主键生成策略
- increment:主键按数值顺序递增,用在mysql上
- sequence:采用数据库提供的sequence 机制生成主键。如Oralce中的Sequence
- native:由Hibernate 根据使用的数据库自行判断
- -->
- <generator class="native">
- <param name=""></param>
- </generator>
- </id>
- <property name="name" column="user_name"></property>
- <property name="sex" column="user_sex"></property>
- <property name="age" column="user_age"></property>
- </class>
- </hibernate-mapping>
这个xml文件中也有一个约束,和之前的hibernate.cfg.xml文件对的约束的添加方法是一致的
完成后,不要忘记将此映射文件的路径引入进 hibernate.cfg.xml 中,上面的hibernate.cfg.xml文件已经引入,可自行去查看
到这里,hibernate 配置就已经结束了,接下来是测试阶段
三、测试hibernate程序
ps:相关概念
(1).Configuration类,启动Hibernate,用来指定对象,关系映射,文件的位置或者动态配置hibernate的属性
(2).SessionFactory接口,一个存储源(DB)的代理,一个Factory对应一个DB
(3).session接口 持久化管理器,主要增删改查
(4).Transaction接口 主要是事务管理
(5).Query和Criteria接口 都是查询 get() load();
1.测试插入数据
- @org.junit.Test
- public void test1(){
- Configuration configuration = new Configuration().configure();
- SessionFactory sessionFactory = configuration.buildSessionFactory();
- Session session = sessionFactory.openSession();
- Transaction transaction = session.beginTransaction();
- User user = new User("李四", "男", 20);
- session.save(user);
- transaction.commit();
- session.close();
- }
2.测试查询数据(查询所有)
- @org.junit.Test
- public void test2(){
- Configuration configuration = new Configuration().configure();
- SessionFactory sessionFactory = configuration.buildSessionFactory();
- Session session = sessionFactory.openSession();
- Transaction transaction = session.beginTransaction();
- //方法一
- /*Criteria createCriteria = session.createCriteria(User.class);
- List<User> list = createCriteria.list();
- System.out.println(list);*/
- //方法二
- /*Query query = session.createQuery("from User");
- List<User> list = query.list();
- System.out.println(list);*/
- //方法三
- SQLQuery query = session.createSQLQuery("select *from user");
- List<Object[]> list = query.list();
- for (Object[] objects : list) {
- System.out.println(Arrays.toString(objects));
- }
- transaction.commit();
- session.close();
- }
3.测试删除数据
- @org.junit.Test
- public void test3(){
- Configuration configuration = new Configuration().configure();
- SessionFactory sessionFactory = configuration.buildSessionFactory();
- Session session = sessionFactory.openSession();
- Transaction transaction = session.beginTransaction();
- //进行删除前,先查询出来这条记录
- User user = session.get(User.class, 1);
- //进行删除
- session.delete(user);
- transaction.commit();
- session.close();
- }
4.测试更新数据
- @org.junit.Test
- public void test4(){
- Configuration configuration = new Configuration().configure();
- SessionFactory sessionFactory = configuration.buildSessionFactory();
- Session session = sessionFactory.openSession();
- Transaction transaction = session.beginTransaction();
- //进行删除前,先查询出来这条记录
- User user = session.get(User.class, 3);
- //重新给name复制
- user.setName("xxx");
- //进行插入
- session.update(user);
- transaction.commit();
- session.close();
- }
到此结束,哈哈!!!
hibernate入门配置及第一个hibernate程序的更多相关文章
- Mybatis入门配置及第一个Mybatis程序
目的:使用mybatis来进行对数据库表的操作 第一步:引入jar包 我这里是创建的maven工程 第二步:创建数据表user 第三步:创建实体类 实体类放在包 com.xxx.pojo 下,包名可自 ...
- Node.js入门以及第一个helloworld程序
1.概念:简单的说 Node.js 就是运行在服务端的 JavaScript.学之前需要明白Node.js是无法挑战jsp.php或者asp这种老牌网站的地位的,是永远不会出现在证券.金融这种领域的. ...
- Android 开发前的基本的配置及第一个Android 程序
一.JDK 1. 网上下载JDK 2. 配置环境变量(网上百度相关资料) JAVA_HOME=D:\Java\jdk1.8.0_91 CLASSPATH=.;%JAVA_ ...
- Servlet入门总结及第一个Servlet程序
目录 一了解Servlet的概念 二Servlet技术功能 三 Servlet技术特点 四 Servlet生命周期 五servlet工作过程 六 Servlet与JSP区别 七Servlet代码结构 ...
- Cesium入门2 - Cesium环境搭建及第一个示例程序
Cesium入门2 - Cesium环境搭建及第一个示例程序 Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 验 ...
- SpringMVC基础入门,创建一个HelloWorld程序
ref:http://www.admin10000.com/document/6436.html 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要 ...
- Java基础教程1:环境配置及第一个HelloWorld.java
本文主要介绍JDK环境配置.Sublime Text3配置及第一个HelloWorld.Java程序.运行环境为Win10系统,使用JDK1.8版本. 1. JDK下载及环境配置 1.1 JDK下载 ...
- Conda安装及第一个py程序
Conda安装及第一个py程序 安装Conda 下载安装 在Anaconda官网下载Anaconda 打开Conda安装程序 设置好安装目录(这个一定要记好,后边要用),比如我的目录就是 D:\Pro ...
- Hibernate学习笔记--第一个Hibernate框架程序
一般使用集成开发环境是,把所需的类库添加到项目属性的库路径中,开发工具在部署时会自动复制所需要的类包到WEB-INF\lib目录下 MyEclipse中: 创建项目,右击项目->myeclips ...
随机推荐
- (转)svn执行clean up命令时报错“Previous operation has not finished; run 'cleanup' if it was interrupted”
今天碰到了个郁闷的问题,svn执行clean up命令时报错“Previous operation has not finished; run 'cleanup' if it was interrup ...
- DOTS原则和愿景
Unity Data Oriented Tech Stack基于一系列原则.这些原则为我们正在努力实现的目标提供了良好的背景.一些原则清楚地反映在代码中.其他则只是我们为自己设定的目标. 默认情况下的 ...
- 部署 --- Nginx
Nginx介绍 简介: Nginx是由伊戈尔.塞索耶夫开发的,在04年10月开源的一款高性能HTTP和反向代理服务器. 因为它的稳定性好,功能丰富,有示例配置文件和较低的系统资源消耗而闻名 同时也是一 ...
- 使用Navicat为数据库表建立触发器
打开Navicat 打开数据表所在的数据库,右击需要新增字段的数据库表,然后点击[设计表] 此时进入表设计界面 点击[触发器]标签页,输入触发器名称,如trigger1 选择触发条件, ...
- Date、DateFormat和Calendar类的简单认识
第三阶段 JAVA常见对象的学习 Date.DateFormat和Calendar类的简单认识 Date类 Date:表示特定的瞬间,精确到毫秒. (一) 构造方法: Date():根据当前的默认毫秒 ...
- loback的介绍与配置-(通俗易通)
一.logback的配置介绍 Logback的配置分为三个内容:Logger.appender及layout Logger:作为日志的记录器,主要用于存放日志对象,也可以定义日志类型.级别. appe ...
- postgresSQL常用命令
1.createdb 数据库名称 产生数据库2.dropdb 数据库名称 删除数据库 3.CREATE USER 用户名称 创建用户4.drop User 用户名称 删除用户 5.SELEC ...
- 1.3.1 Lock接口及其实现
1.锁的本质 2.Lock接口使用ReentrenLock 3.读写锁使用 4.读写锁实现 Lock接口方法 有点意思的是lockInterruptibly(), 只要没有获取到锁就会一直等待,直到某 ...
- 西安区域赛 D.Miku and Generals 二分图+背包
Miku and Generals Describe "Miku is matchless in the world!" As everyone knows, Nakano Mik ...
- 15.Ansible安装与配置简单版
Ansible是一个简单高效的自动化运维管理工具,用Python开发,能大批量管理N多台机器,可以并发的在多台机器上部署应用.安装软件.执行命令.配置和编排任务. 一.Ansible工作机制 从图中可 ...