关系型数据库与面向对象

模型不匹配(阻抗不匹配)
Java面向对象语言,对象模型,其主要概念有:继承、关联、多态等;数据库是关系模型,其主要概念有:表、主键、外键等。
解决办法:
1使用JDBC手工转换。
2使用ORM(Object Relation Mapping对象关系映射)框架来解决,主流的ORM框架有Hibernate、TopLink、OJB。
安装配置
将下载目录/hibernate3.jar和/lib下的hibernate运行时必须的包加入classpath中:
antlr.jar,cglib.jar,asm.jar,commons-collections.jar,commons-logging.jar,jta.jar,dom4j.jar
 
①配置文件hibernate.cfg.xml和hibernate.properties,XML和properties两种,这两个文件的作用一样,提供一个即可,推荐XML格式,下载目录/etc下是示例配置文件。
可以在配置文件指定:
数据库的URL、用户名、密码、JDBC驱动类、方言等。
启动时Hibernate会在CLASSPATH里找这个配置文件。
②映射文件(hbm.xml,对象模型和关系模型的映射)。在/eg目录下有完整的hibernate示例。
小例子
hibernate.cfg.xml
  1. <!DOCTYPE hibernate-configuration PUBLIC
  2. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  3. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  4.  
  5. <hibernate-configuration>
  6. <session-factory>
  7. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  8. <property name="hibernate.connection.url">jdbc:mysql:///test1</property>
  9. <property name="hibernate.connection.username">root</property>
  10. <property name="hibernate.connection.password"></property>
  11. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  12. <property name="hibernate.hbm2ddl.auto">create</property>
  13. <mapping resource="com/dzq/domain/User.hbm.xml"/>
  14. </session-factory>
  15.  
  16. </hibernate-configuration>

User.java

  1. package com.dzq.domain;
  2.  
  3. import java.util.Date;
  4.  
  5. public class User {
  6. private int id;
  7. private String username;
  8. private Date birthday;
  9.  
  10. public int getId() {
  11. return id;
  12. }
  13.  
  14. public void setId(int id) {
  15. this.id = id;
  16. }
  17.  
  18. public String getUsername() {
  19. return username;
  20. }
  21.  
  22. public void setUsername(String username) {
  23. this.username = username;
  24. }
  25.  
  26. public Date getBirthday() {
  27. return birthday;
  28. }
  29.  
  30. public void setBirthday(Date birthday) {
  31. this.birthday = birthday;
  32. }
  33.  
  34. }

User.hbm.xml

  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping package="com.dzq.domain">
  6.  
  7. <class name="User">
  8. <id name="id">
  9. <generator class="native" />
  10. </id>
  11. <property name="username" />
  12. <property name="birthday" />
  13. </class>
  14.  
  15. </hibernate-mapping>

TestHibernate.java

  1. package com.dzq.test;
  2.  
  3. import java.util.Date;
  4.  
  5. import org.hibernate.Session;
  6. import org.hibernate.SessionFactory;
  7. import org.hibernate.Transaction;
  8. import org.hibernate.cfg.Configuration;
  9.  
  10. import com.dzq.domain.User;
  11.  
  12. public class TestHibernate {
  13. public static void main(String[] args) {
  14. Configuration cfg=new Configuration();
  15. cfg.configure();
  16. SessionFactory sc=cfg.buildSessionFactory();
  17. Session s=sc.openSession();
  18. Transaction tx=s.beginTransaction();
  19.  
  20. User user=new User();
  21. user.setBirthday(new Date());
  22. user.setUsername("dudu");
  23. s.save(user);
  24. tx.commit();
  25. s.close();
  26. System.out.println("end");
  27. }
  28. }
 

20160504-hibernate入门的更多相关文章

  1. 三大框架之hibernate入门

    hibernate入门   1.orm      hibernate是一个经典的开源的orm[数据访问中间件]框架           ORM( Object Relation Mapping)对象关 ...

  2. Hibernate入门案例及增删改查

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

  3. Hibernate入门案例 增删改

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

  4. Hibernate入门6.Hibernate检索方式

    Hibernate入门6.Hibernate检索方式 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv Hibernate的整体框架已经 ...

  5. Hibernate入门5持久化对象关系和批量处理技术

    Hibernate入门5持久化对象关系和批量处理技术 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hiberna ...

  6. Hibernate入门4.核心技能

    Hibernate入门4.核心技能 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hibernate3的基本知识, ...

  7. Hibernate入门3.配置映射文件深入

    Hibernate入门3.配置映射文件深入 2013.11.27 前言: 之前的两节是在Java项目中如何使用hibernate,并且通过一个简单地项目实践,期间有很多的错误,一般都是因为配置包的问题 ...

  8. 简单的Hibernate入门简介

    其实Hibernate本身是个独立的框架,它不需要任何web server或application server的支持.然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西, ...

  9. Hibernate入门(1)-第一个Hibernate程序

    Hibernate入门(1)-第一个Hibernate程序 Hibernate是最著名的ORM工具之一,本系列文章主要学习Hibernate的用法,不涉及Hibernate的原理.本文介绍第一个Hib ...

  10. hibernate入门之person表

    下面的hibernate入门person表指的是:根据mysql数据库中的test表和其中的元素-->建立映射表==>进而创建持久化类的顺序来操作了,下面为步骤 1.配置MySQL驱动程序 ...

随机推荐

  1. JS代码片段

    1. 对比cookie // cookie array function getCookieArrayByStr(str) { var cookies = str.split("; &quo ...

  2. android中setOnClickListener的那点事

    最近在写代码中,发现在xml文件设置了android:clickable="false",之后这个View还是可点的. 后来发现,是代码中对View设置了监听事件(setOnCli ...

  3. Java自定义缓冲区MyBufferedReader

    package IODemo; import java.io.FileReader; import java.io.IOException; import java.io.Reader; /** * ...

  4. 转载总结 C# 多态(虚方法,抽象,接口实现)

    前言:我们都知道面向对象的三大特性:封装,继承,多态.封装和继承对于初学者而言比较好理解,但要理解多态,尤其是深入理解,初学者往往存在有很多困惑,为什么这样就可以?有时候感觉很不可思议,由此,面向对象 ...

  5. 转载有个小孩跟我说LINQ(重点讲述Linq中GroupBy的原理及用法)

    转载原出处: http://www.cnblogs.com/AaronYang/archive/2013/04/02/2994635.html 小孩LINQ系列导航:(一)(二)(三)(四)(五)(六 ...

  6. php如何清除html格式并去除文字中的空格然后截取文字

    PHP如何清除html格式并去除文字中的空格然后截取文字,详细分享一下处理方法(顺便对PHP清除HTML字符串的函数做了一个小结): htmlspecialchars 将特殊字元转成 HTML格式语法 ...

  7. JavaScript的this简单实用

    1.默认绑定全局变量,在全局函数中: function fn(){ console.log(this.a); } var a=2; fn();//这里调用的是window 2.隐式绑定: functi ...

  8. Java数据抓取经验【转载】

    本人担任职友集的java工程师五年,其中抓取数据占主要的一部分,抓取的信息只要有两部分,职位和简历,其中职位的抓取量为日均插入量为30万,更新量 为60万,抓取全国300多个人才网站.职友集(现在改名 ...

  9. Codeforces Round #324 (Div. 2) B. Kolya and Tanya 快速幂

    B. Kolya and Tanya Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/pro ...

  10. Struts1中ActionForward的技巧介绍

    ActionForward是做什么的?他是用来封装转发和重定向路径的. 在struts- config.xml中<forward name="error" path=&quo ...