Hibernate单表映射学习笔记之一——hibernalnate开发环境配置
1、什么是ORM?
Object/Relationship Mapping:对象/关系映射
2、写SQL语句不好之处:
(1)不同数据库使用的SQL语法不同(PL/SQL、T/SQL)
(2)同样的功能在不同的数据库中有不同的实现方式(分页SQL)
(3)过分依赖SQL语句对程序的移植和拓展不利
3、Hibernate
(1)ORM框架技术
(2)对JDBC进行了非常轻量的对象封装
4、其他ORM框架技术
(1)Mybatis(前身为iBatis)
(2)Toplink(现为Oracle As Toplink)
(3)EJB:本身就是JAVAEE规范
5、所需工具:
(1) Hibernate 核心包;
(2) Hibernate eclipse plugin;
6、创建Hibernate项目步骤:
(1)导入核心包及数据库驱动:
(2)创建配置文件;
- <?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="connection.username">root</property>
- <property name="connection.password">root</property>
- <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="connection.url">jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=UTF-8</property>
- <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
- <property name="show_sql">true</property>
- <property name="format_sql">true</property>
- <property name="hbm2ddl.auto">create</property>
- <mapping resource="Student.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
(3)创建持久化类;
- package hibernate001;
- //学生类
- import java.util.Date;
- public class Student{
- //持久化类的设计原则
- //1、公有的类
- //2、提供共有的不带参数的默认的构造方法
- //3、属性私有
- //4、属性setter/getter封装
- private int sid;//学号
- private String name;//姓名
- private String gender;//性别
- private Date birthday;//出生日期
- private String address;//地址
- public Student(){
- }
- public Student(int sid, String name, String gender, Date birthday, String address) {
- this.sid = sid;
- this.name = name;
- this.gender = gender;
- this.birthday = birthday;
- this.address = address;
- }
- public int getSid() {
- return sid;
- }
- public void setSid(int sid) {
- this.sid = sid;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getGender() {
- return gender;
- }
- public void setGender(String gender) {
- this.gender = gender;
- }
- public Date getBirthday() {
- return birthday;
- }
- public void setBirthday(Date birthday) {
- this.birthday = birthday;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- @Override
- public String toString() {
- return "Student [sid=" + sid + ", name=" + name + ", gender=" + gender + ", birthday=" + birthday + ", address="
- + address + "]";
- }
- }
(4)创建对象——关系映射文件;
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <!-- Generated 2017-4-14 17:17:44 by Hibernate Tools 3.5.0.Final -->
- <hibernate-mapping>
- <class name="hibernate001.Student" table="STUDENT">
- <id name="sid" type="int">
- <column name="SID" />
- <generator class="assigned" />
- </id>
- <property name="name" type="java.lang.String">
- <column name="NAME" />
- </property>
- <property name="gender" type="java.lang.String">
- <column name="GENDER" />
- </property>
- <property name="birthday" type="java.util.Date">
- <column name="BIRTHDAY" />
- </property>
- <property name="address" type="java.lang.String">
- <column name="ADDRESS" />
- </property>
- </class>
- </hibernate-mapping>
(5)通过Hibernate API编写访问数据库代码:
我用的是Juntil4这个测试类
- package hibernate001;
- import org.hibernate.Transaction;
- import java.util.Date;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.cfg.Configuration;
- import org.hibernate.service.ServiceRegistry;
- import org.hibernate.service.ServiceRegistryBuilder;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- //测试类
- public class StudentTest {
- private SessionFactory sessionFactory;
- private Session session;
- private Transaction transaction;
- @Before
- public void init(){
- //穿件配置对象
- Configuration configuration = new Configuration().configure();
- //创建服务注册对象
- ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
- //创建会话对象
- sessionFactory = configuration.buildSessionFactory(serviceRegistry);
- //打开会话
- session = sessionFactory.openSession();
- //打开事务
- transaction = session.beginTransaction();
- }
- @After
- public void destory(){
- transaction.commit();//提交事务
- session.close();//关闭会话
- sessionFactory.close();//关闭会话工厂
- }
- @Test
- public void testSavestudent(){
- Student s1 = new Student(1, "张三丰", "男", new Date(), "武当山");
- session.save(s1);
- }
- }
Hibernate单表映射学习笔记之一——hibernalnate开发环境配置的更多相关文章
- Android学习笔记1——Android开发环境配置
一.JDK配置 Android是基于Java进行开发的,首先需要在电脑上配置JDK(Java Development Kit).在http://www.androiddevtools.cn/下载对应系 ...
- Hadoop学习笔记(4) ——搭建开发环境及编写Hello World
Hadoop学习笔记(4) ——搭建开发环境及编写Hello World 整个Hadoop是基于Java开发的,所以要开发Hadoop相应的程序就得用JAVA.在linux下开发JAVA还数eclip ...
- google protobuf学习笔记:windows下环境配置
欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/45371743 protobuf的使用和原理,请查看:http:/ ...
- NLP自然语言处理学习笔记三(集成开发环境)
前言: 我们在做自然语言学习的过程中使用Python进行编程.是用解析器的方式确实有些麻烦.在这里给大家推荐一款集成开发环境IDE可以很方便的对Python进行项目管理,代码自动提示,运行调试等. 简 ...
- C#学习笔记一:C#开发环境的设置
C#是.NET Framework的一部分,用于编写.NET应用程序. C#集成开发环境(IDE) 微软提供了以下C#编程开发工具: Visual Studio 2010 (VS) Visual C# ...
- Egret学习笔记.2 (Egret开发环境)
配置Egret的开发环境是很简单的,去https://www.egret.com/products/engine.html下载 然后基本就是下一步下一步,安装好了就好了,装好了选择Wing组件,然后下 ...
- go语言学习笔记1 Go开发环境
什么是Go?Go是一门并发支持.垃圾回收的编译型系统编程语言,旨在创造一门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡的一门编程语言. Go的主要特点有哪些?* 类型安全 和 内存安 ...
- 【EJB学习笔记】——EJB开发环境搭建(Eclipse集成JBoss)
之前一直用的EJB开发环境是他们搭建好的,直接拿来用,不过还是感觉老吃别人嚼好的不太好吃,所以自己动手来玩一玩. EJB开发依赖的最基本的环境:JDK.Eclipse.JBoss,这里简单介绍一下最基 ...
- php 学习笔记之搭建开发环境(mac版)
Mac 系统默认集成了很多开发工具,其中就包括 php 所需要的一些软件工具. 下面我们将搭建最简单的 php 开发环境,每一步都会验证上一步的操作结构,请一步一步跟我一起搭建吧! web 服务器之 ...
随机推荐
- python3 字符串属性(一)
python3 字符串属性 >>> a='hello world' >>> dir(a) ['__add__', '__class__', '__contains_ ...
- Spring4面向切面AOP
AOP(Aspect Oriented Programming)面向切面编程,通过预编译方式和运行期动态代理实现程序功能的横向多模块统一控制的一种技术.AOP是OOP的补充,是spring框架中的一个 ...
- Python中如何开发一个注册接口小实例
import flask from flask import request #想获取到请求参数的话,就得用这个 server = flask.Flask(__name__) #吧这个python文件 ...
- jquery 整理笔记(一)
this:表示当前的上下文对象是一个html对象,可以调用html对象所拥有的属性,方法 $(this),代表的上下文对象是一个jquery的上下文对象,可以调用jquery的方法和属性值. each ...
- phpcon china 2017听讲总结
1. <PHP in 2017>--Rasmus Lerdorf 2. <车轮的服务化service架构>--韩天峰 3. <企点微服务网关演进之路>--郑榕 4. ...
- django学习笔记(三)模型
1.创建一个django app: python manage.py startapp books 2.validate 命令检查你的模型的语法和逻辑是否正确.一旦你觉得你的模型可能有问题,运行 py ...
- OpenCV-Python sift/surf特征匹配与显示
import cv2 import numpy as np def drawMatchesKnn_cv2(img1_gray,kp1,img2_gray,kp2,goodMatch): h1, w1 ...
- PPAS数据库备份与恢复
PPAS数据库备份不同于普通的Postgresql数据库的备份,因为PPAS数据库是兼容Oracle数据库的,所以会涉及到同义词.包.存储过程等,这个时候用Postgresql社区的备份与恢复工具时, ...
- C# Hashtable赋值给另一个Hashtable时
c#中想将一个hashtable的元素全部给另一个hashbale时, 使用迭代一个一个元素赋值 如: ammus.Clear(); IDictionaryEnumerator ie = _temp. ...
- 如何在开启了log-bin的MySQL Server中创建FUNCTION
在MySQL主从复制机器的master的数据库中创建function,报出如下错误: Error Code: 1418. This function has none of DETERMINISTIC ...