第一个hibernate程序HelloWorldHibernate
HelloWorldHibernate步骤:
HelloWorld
1,新建java项目hibernate_0100_HelloWorld
2,学习User-library-hibernate,并加入相应的jar包
a)项目右键-build path-configure build path-add library
b)选择User-library,在其中新建library,命名hibernate
c)在该library中加入hibernate所需的包
- /required必须的包
- Sl4j jar日志包
- bytecode生成二进制字节码需要的
3,引入mysql的JDBC驱动包
4,在mysql中建立对应的数据库及表
a)create database hibernate;
b)use hibernate
c)create table student (id int primary key,name varchar(20),age int );
5,建立hibernate配置文件hibernate.cfg.xnl
a),从参考文档中copy
b),修改对应的数据库连接
c),注释掉暂时用不上的内容
6,建立Student类
7,建立Student映射文件Student.hbm.xml
映射关系:
哪个类-----------------------哪个表
类属性----------------------表字段
a)参考文档
8,将映射文件加入到hibernate.cfg.xml
<mapping resource="com/oracle/hibernate/model/Student.hbm.xml"/>
a)参考文档
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
项目架构:
package com.oracle.hibernate.model; public class Student {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Hibernate.cfg.xml配置文件:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/hibernate</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property> <!-- JDBC connection pool (use the built-in) -->
<!-- hibernate自带的连接池,实际开发一般用applicationserver本身用jndi注册在里面的连接池 -->
<!-- <property name="connection.pool_size">1</property> --> <!-- SQL dialect -->
<!-- 方言,hibernate已经统一了数据库的访问,他的HQL语句就是官方语言,但不过最终还是翻译成具体不同数据库的sql语句,(搜文档mysql)-->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management -->
<!-- 3.2以后新加的内容,涉及到session。。。 -->
<!-- <property name="current_session_context_class">thread</property> --> <!-- Disable the second-level cache -->
<!-- 把二级缓存disable掉,优化hibernate -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout -->
<!-- 要不要打印生成的sql语句 -->
<property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup -->
<!-- hbm(hibernatemapping) ,ddl(建表语句。是否自动生成建表语句)-->
<!-- <property name="hbm2ddl.auto">update</property> --> <mapping resource="com/oracle/hibernate/model/Student.hbm.xml"/> </session-factory> </hibernate-configuration>
Student.hbm.xml配置文件:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- 映射的是哪个package里的类 -->
<hibernate-mapping package="com.oracle.hibernate.model">
<!-- 类到表的映射 类名若和表名一致,table可以省略--> <class name="Student">
<id name="id"></id>
<property name="name"></property>
<property name="age"></property>
</class> </hibernate-mapping>
Test类:
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; import com.oracle.hibernate.model.Student; public class StudentTest { /**
* @param args
*/
public static void main(String[] args) {
Student s = new Student(); s.setId(3);
s.setName("student3");
s.setAge(3); /**
* Configuration.configure()读配置文件的。
*Document,File,Sting ,Url四种重载方法,默认是读取src下的hibernate.cfg.xml
*/
Configuration cfg = new Configuration(); /**
* cfg.configure()已经把hibernate.cfg.xml解析了,返回值还是Configuration,
* 是已经有了配置选项的Configuration对象。
* buildSessionFactory()暂时理解为产生Connection的一个工厂
*/
SessionFactory sf = cfg.configure().buildSessionFactory();
Session session = sf.openSession();//打开新的Session /**
* 在hibernate里边的操作都应放在一个事务里
* session.beginTransaction()返回值Transaction,可以把他存在来。随便
*/
session.beginTransaction();
/**
* save时,先看s是Student类,然后去hibernate.cfg.xml配置文件找
* <mapping resource="XXX.hbm.xml"/>
* 看是否有这个配置文件,找到后,看他的映射关系,类和数据库表的映射关系,然后拼成sql语句
* 自动连数据库,自动生成preparedStatement,自动执行executeUpdate
*/
session.save(s); /**
* 拿到当前事务,提交
*/
session.getTransaction().commit(); session.close(); //关闭session
sf.close(); //关闭工厂
} }
注意:hibernate.cfg.xml名字不能改,约定俗成。Student.hbm.xml放在我们的Model类的包里。
session.save(s);方法执行图示:
save时,先看s是Student类,然后去hibernate.cfg.xml配置文件找 <mapping resource="com/oracle/hibernate/model/Student.hbm.xml"/>, 看是否有这个Student的类配置文件,找到后,看他的映射关系,类和数据库表的映射关系,类的属性和表字段的映射关系。然后拼成sql语句,自动连数据库,自动生成preparedStatement,自动执行executeUpdate,数据就保存到了数据库。
查找出单个对象,修改,删除代码如下:
//查询出id=1的Student
Student s = (Student)session.get(Student.class,1); System.out.println(s);
//修改信息
s.setAge(20);
session.update(s);
//删除一个对象
//session.delete(s); ts.commit(); if(session != null){
if(session.isOpen())
session.close();
}
sf.close();
第一个hibernate程序HelloWorldHibernate的更多相关文章
- 攻城狮在路上(壹) Hibernate(二)--- 第一个hibernate程序
1.直接通过JDBC API持久化实体域对象: A.java.sql常用接口和类: DriverManager:驱动程序管理器,负责创建数据库连接. Connection:代表数据库连接. State ...
- Hibernate入门(1)-第一个Hibernate程序
Hibernate入门(1)-第一个Hibernate程序 Hibernate是最著名的ORM工具之一,本系列文章主要学习Hibernate的用法,不涉及Hibernate的原理.本文介绍第一个Hib ...
- 第一个Hibernate程序
一 新建一个Java工程(Hibernate) 在src目录下创建一个名为"hibernate.cfg.xml"的文件并配置好各个属性,如下: <?xml version=& ...
- hibernate入门配置及第一个hibernate程序
学习了hibernate后就想先给大家分享一下它的配置方法: jar包导入 一.数据库表的创建 二.开启hibernate配置 编译器:eclipse 数据库:mysql 1.创建第一个xml文件 ...
- 我的第一个Hibernate程序
1.建表建序列(所用数据库为Oracle,数据库名为XE,创建用户hibernate,密码为123456) conn system/manager; ; grant connect to hibern ...
- 【SSH三大框架】Hibernate基础第一篇:编写第一个Hibernate程序
接下来这几章节学习的是Hibernate,Hibernate的主要作用就是用来和数据库进行连接,简化了JDBC的操作. 首先,我们创建项目,然后把Hibernate的jar包和sqlserver的驱动 ...
- 第一个Hibernate 程序
使用MyEclipse建立Hibernate工程 index页面的Jsp源文件 <%@ page language="java" import="java.util ...
- Java程序员从笨鸟到菜鸟之(五十一)细谈Hibernate(二)开发第一个hibernate基本详解
在上篇博客中,我们介绍了<hibernate基本概念和体系结构>,也对hibernate框架有了一个初步的了解,本文我将向大家简单介绍Hibernate的核心API调用库,并讲解一下它的基 ...
- 一个Hibernate小程序
基本步骤 在前一篇博文Hibernate环境搭建中为大家详细的介绍如何搭建一个学习新类库的学习环境.今天,为大家带来一个Hibernate小例子,让大家能够快速上手. 步骤如下: 1.配置hibern ...
随机推荐
- Hdu3549 Flow Problem 2017-02-11 16:24 58人阅读 评论(0) 收藏
Flow Problem Problem Description Network flow is a well-known difficult problem for ACMers. Given a ...
- Could not load file or assembly 'System.Data.SQLite ... 试图加载格式不正确的程序
坑爹的System.Data.SQLite. 先给出下载地址:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki ...
- vue实现首页导航切换不同路由的方式(二)【使用vuex实现的】
<nav> <!-- 导航栏 --> <div class="indexNavOut"> <div class="indexNa ...
- Jquery 记一次使用fullcalendar的使用记录
最近接了一个需求,把excel做的表格开发到系统里,本来想直接做成表格的形式,后来考虑到数据库中的表结构不好设计,最后决定做成日历的形式: 先上成品图 需要引用的js,fullcalendar官网可以 ...
- WM_COPYDATA+BHO+Qt实现进程间通信
最近项目有一个需求:点击网页上某个按钮,通知Qt客户端.网页相关操作使用了BHO,BHO与Qt通信通过WB_COPYDATA,为什么这么麻烦呢,因为项目正好用到了BHO,可能还有其他方式,能直接通过网 ...
- VUE环境安装和创建项目
1.首先要安装nodejs和npm. 下载nodejs安装,下载地址:https://nodejs.org/en/ 安装很简单一路next即可. 安装完成后可以在cmd窗口输入node -v 和 np ...
- NETCore 同步AD域组织和用户
BitAdminCore为没有自主开发框架的小团队,提供快速项目搭建及开发能力. 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxi ...
- 开源应用框架BitAdminCore:更新日志20180817
索引 NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/coo ...
- UWP开发入门(七)——下拉刷新
本篇意在给这几天Win10 Mobile负面新闻不断的某软洗地,想要证明实现一个简单的下拉刷新并不困难.UWP开发更大的困难在于懒惰,缺乏学习的意愿.而不是“某软连下拉刷新控件都没有”这样的想法. 之 ...
- 201621123023《Java程序设计》第9周学习总结
一.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 二.书面作业 1. List中指定元素的删除(题集题目) 1.1 实验总结.并回答:列举至少2种在List中删除 ...