星期一, 十二月 28, 2015 23:01:37
课程内容
1.helloworld
a)xml
b)annotation
2.hibernate原理模拟
----什么是O/R mapping以及为什么要有O/R mapping
3.
client-------app server(tomcat)---------struct(分发)-----------action-------------service(业务逻辑处理)-------------DAO------------model(实体类)
原来的:
client----------1.new()------------------>Student
2.jdbc
面向对象的替代面向关系的这层的逻辑。
用hibernate编程用面向对象的方法。
hibernate:
client
1.new() Student
2. configuration
3.buildsessionFactory() SessionFactory
4.openSesiion() ----createMessage()-----session
5.save(Student s)() pesist()DB
hibernate帮我们屏蔽了关系型,直接使用面向对象的方法。
面向对象的写法---hibernate---面向关系的数据库
风格
1.先脉络,后细节
2.先操作,后原理
3.重Annotation,轻xml配置文件
JPA java持久化api
hibernate-extension
资源:
1.http:www.hibernate.org
hibernate-annotation-3.4
hibernate-distribution-3.3
slf4j-1.5.8
一、new一个java project,名为hibernate_0100_HelloWorld
2.学习建立user library -hibernate,并加入相应的jar包
2.1在windows-->preference-->java-->user library
new自己包,名称为hibernate-->add jars
2.2在该libraries中加入hibernate所需jar包
1.hibernate core
2./required
3.slf-nop.jar
3.引入mysql的jdbc驱动包
4.在mysql中建立对应的数据库以及表
1.create database hibernate
2.user hibernate
3.create table Student(id int primary key,name varchar(20),age int);
5.建立hibernate配置文件hibernate.cfg.xml
1.从参考文档中copy
2.修改赌赢的数据库连接
3.注释掉暂时用不上的内容
6.建立Student类
7.建立Student映射文件Student.hbm.xml
参考文档
8.将映射文件加入到hibernate.cfg.xml
参考文档
9.写测试类Main,在Main中对Student对象进行直接的存储测试
参考文档
二、在mysql中创建数据库和表
create database hibernate;
use hibernate;
create table student(id int primary key,name varchar(20),age int);
hibernate-annotations-3.4.0 GA
hibernate-distribution-3.3.2.GA-dist
slf4j-1.5.8
原理
object relatation的sql语句
从sql里拿出来再进行组装成object
建立java project
window-->preference-->java-->user libraries
需要jar 在distribution中的hibernate3.jar
G:\asiainfo\web_hp2\Hibernate3.3.2\jar\hibernate-distribution-3.3.2.GA\lib\required 所以的jar
G:\asiainfo\web_hp2\Hibernate3.3.2\jar\slf4j-1.5.8 slf4j-nop-1.5.8.jar
在src中新建file
hibernate.cfg.xml
数据库配置连接
com.mysql.jdbc.Driver
jdbc:mysql://localhost/hibernate
root
root
package com.zhuhw.hibernate; public class Student { private int id; 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; } private String name; private int age; }
<?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) --> <!-- <property name="connection.pool_size">1</property> --> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup --> <!-- <property name="hbm2ddl.auto">update</property>--> <!-- hibernate去哪里找这个配置文件 --> <mapping resource="com/zhuhw/hibernate/Student.hbm.xml"/> </session-factory> </hibernate-configuration>
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- 找不到entity,是因为这个类没有改包名 --> <hibernate-mapping package="com.zhuhw.hibernate"> <class name="Student" table="student" > <!-- id主键;name=id对应的是Student中的getid() --> <id name="id" ></id> <property name="name" /> <property name="age" /> <!-- hibernater知道了怎么将class与表中的字段对应到一起了 --> </class> </hibernate-mapping>
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import com.zhuhw.hibernate.Student; public class StudentTest { public static void main(String[] args){ Student s = new Student(); s.setId(1); s.setAge(23); s.setName("ll"); Configuration cf = new Configuration(); SessionFactory sf = cf.configure().buildSessionFactory(); Session session = sf.openSession(); //在hibernate中执行操作要在一个事务里面 session.beginTransaction(); session.save(s); session.getTransaction().commit(); session.close(); sf.close(); } }
运行结果:
Hibernate: insert into student (name, age, id) values (?, ?, ?)
相关推荐
标题中的"eq_data_30_day_m1.rar"是一个压缩文件,通常用于存储多个相关文件或数据集。根据描述,这个文件与《Python:从入门到实践》这本书的第16章有关,这意味着它可能包含了一个与Python编程、数据分析或者可视化...
标题中的"RP_LAST_DAY_OF_MONTHS.doc"似乎是一个文档文件名,通常用于记录或说明某个特定的函数、过程或在IT环境中使用的脚本。在这个情况下,"RP_LAST_DAY_OF_MONTHS"很可能是一个函数或者宏,它的主要功能是计算或...
学习笔记——mybatis的起步(1) 1.什么是框架? 他是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题。 使用框架的好处: 框架封装了很多的细节,使开发者可以使用极简的方式实现功能。...
品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程...
30天全球地震数据集
自学C语言的day_01
在 "01day_01mybatis_java_" 这个学习资料中,我们将会深入理解 MyBatis 的核心概念和基本使用方法。MyBatis 的主要组成部分包括: 1. **SqlSessionFactory**: 这是 MyBatis 的核心对象,用于创建 SqlSession,它是...
"Day_Night_Cycle.unitypackage" 是一个专门为Unity3D设计的白天夜晚切换插件,它允许开发者轻松地在游戏世界中实现逼真的时间流逝效果。 该插件的核心功能在于其渐变改变天空盒的技术。天空盒(Skybox)是Unity3D...
标题“read_amsr_day_v7_gif_matlab_png_”暗示了这是一个关于使用MATLAB处理AMS(R)(Advanced Microwave Scanning Radiometer)卫星数据,特别是每天的数据,并将其转化为GIF或PNG图像的过程。AMSR是地球观测卫星上...
在这个"springmvc_day01_start.zip"压缩包中,我们可以找到一个详细的SpringMVC入门实例,涵盖了从环境搭建到代码编写的全过程。 首先,环境搭建是学习任何技术的第一步。对于SpringMVC,这通常包括以下几个部分: ...
本项目名为“day_45_bookstore”,是一个使用MVC(Model-View-Controller)框架编写的在线图书管理系统。通过这个系统,用户可以方便地进行图书的增删改查操作,极大地提高了图书管理的效率。 首先,我们来深入理解...
CMIP6温度数据
标题中的“Day_five.rar_day_five_学习计划_日程安排系统_日程管理”提示我们这是一个关于日程管理的学习资源,可能是一个项目或教程的第五天内容,涉及到创建或使用日程安排系统的知识。描述进一步确认了这个系统是...
"MySQL_Exploit.rar_0day_C 0day_Exploit_mysql c"这个标题暗示了存在一个针对MySQL的0day攻击方法,可能是通过C语言编写的代码实现。 描述中提到"MySQL_Exploit 0day 放好久了 今天传上来",意味着这个漏洞可能...
标题中的“time_of_day_156m.rar_time of day_时间戳守时程序”表明这是一个与时间戳和守时程序相关的项目。这个程序可能是为了在特定环境(比如156MHz的工作频率)下准确获取当前时间而设计的。156MHz通常与高速...
《PyPI官网下载:tracardi_day_night_split-0.1.2-py3-none-any.whl详解》 PyPI(Python Package Index)是Python社区的重要资源库,它为全球Python开发者提供了一个集中下载和分享Python软件包的平台。在PyPI上,...
15_day_mini
javascript学习第一天笔记
first_day_of_school
day_wise_datashrink.csv