hibernate学习(一)helloWorld,配置文件
来源:互联网 发布:如何备考雅思 知乎 编辑:程序博客网 时间:2024/06/06 04:31
对象的持久化;
•狭义的理解,“持久化”仅仅指把对象永久保存到数据库中
•广义的理解,“持久化”包括和数据库相关的各种操作:
–保存:把对象永久保存到数据库中。
–更新:更新数据库中对象(记录)的状态。
–删除:从数据库中删除一个对象。
–查询:根据特定的查询条件,把符合查询条件的一个或多个对象从数据库加载到内存中。
–加载:根据特定的OID,把一个对象从数据库加载到内存中。
为了在系统中能够找到所需对象,需要为每一个对象分配一个唯一的标识号。在关系数据库中称之为主键,而在对象术语中,则叫做对象标识(Objectidentifier-OID).
•Hibernate:
–非常优秀、成熟的 ORM 框架。
–完成对象的持久化操作
–Hibernate 允许开发者采用面向对象的方式来操作关系数据库。
–消除那些针对特定数据库厂商的 SQL 代码
•myBatis:
–相比 Hibernate 灵活高,运行速度快
–开发速度慢,不支持纯粹的面向对象操作,需熟悉sql语
句,并且熟练使用sql语句优化功能
Hibernate开发步骤;
创建持久化java类:
•提供一个无参的构造器:使Hibernate可以使用Constructor.newInstance() 来实例化持久化类
•提供一个标识属性(identifier property):通常映射为数据库表的主键字段. 如果没有该属性,一些功能将不起作用,如:Session.saveOrUpdate()
•为类的持久化类字段声明访问方法(get/set): Hibernate对JavaBeans 风格的属性实行持久化。
•使用非 final 类:在运行时生成代理是 Hibernate 的一个重要的功能. 如果持久化类没有实现任何接口, Hibnernate 使用 CGLIB 生成代理. 如果使用的是 final 类, 则无法生成 CGLIB 代理.
•重写 eqauls 和 hashCode 方法: 如果需要把持久化类的实例放到 Set 中(当需要进行关联映射时), 则应该重写这两个方法
News.hbm.xml
<hibernate-mapping package="com.atguigu.hibernate.helloworld"> <class name="News" table="NEWS" dynamic-insert="true"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <!-- 指定主键的生成方式, native: 使用数据库本地方式 --> <generator class="native" /> </id> <property name="title" not-null="true" unique="true" index="news_index" length="50" type="java.lang.String" column="TITLE" > </property> <property name="author" type="java.lang.String" index="news_index"> <column name="AUTHOR" /> </property> <property name="date" type="date"> <column name="DATE" /> </property> <property name="desc" formula="(SELECT concat(title, ',', author) FROM NEWS n WHERE n.id = id)"></property><property name="content"><column name="CONTENT" sql-type="text"></column></property><property name="picture" column="PICTURE" type="blob"></property> </class> </hibernate-mapping>
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> <!-- 配置连接数据库的基本信息 --><property name="connection.username">root</property><property name="connection.password">1230</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql:///hibernate5</property><!-- 配置 hibernate 的基本信息 --><!-- hibernate 所使用的数据库方言 --><property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property><!-- 执行操作时是否在控制台打印 SQL --><property name="show_sql">true</property><!-- 是否对 SQL 进行格式化 --><property name="format_sql">true</property><!-- 指定自动生成数据表的策略 --><property name="hbm2ddl.auto">update</property><!-- 指定关联的 .hbm.xml 文件 --><mapping resource="com/atguigu/hibernate/helloworld/News.hbm.xml"/></session-factory></hibernate-configuration>测试类:HibernateTest
package com.atguigu.hibernate.helloworld;import java.sql.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;import org.junit.Test;public class HibernateTest {@Testpublic void test() {System.out.println("test...");//1. 创建一个 SessionFactory 对象SessionFactory sessionFactory = null;//1). 创建 Configuration 对象: 对应 hibernate 的基本配置信息和 对象关系映射信息Configuration configuration = new Configuration().configure();//4.0 之前这样创建//sessionFactory = configuration.buildSessionFactory();//2). 创建一个 ServiceRegistry 对象: hibernate 4.x 新添加的对象//hibernate 的任何配置和服务都需要在该对象中注册后才能有效.ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()) .buildServiceRegistry();//3).sessionFactory = configuration.buildSessionFactory(serviceRegistry);//2. 创建一个 Session 对象Session session = sessionFactory.openSession();//3. 开启事务Transaction transaction = session.beginTransaction();//4. 执行保存操作News news = new News("Java12345", "ATGUIGU", new Date(new java.util.Date().getTime()));session.save(news);//5. 提交事务 transaction.commit();//6. 关闭 Sessionsession.close();//7. 关闭 SessionFactory 对象sessionFactory.close();}}
0 0
- hibernate学习(一)helloWorld,配置文件
- hibernate学习(一)helloworld程序
- Hibernate HelloWorld(一)
- Hibernate 总结(一):HelloWorld
- Hibernate入门(一)HelloWorld
- Hibernate学习总结(一)——Intellij IDEA下新建Hibernate HelloWorld
- Hibernate--HelloWorld案例--(一)
- JAXWS学习(一)- HelloWorld
- swift学习(一)HelloWorld
- SpringMVC学习(一)-HelloWorld
- MyBatis学习(一)-HelloWorld
- Hibernate HelloWorld-04 Hibernate 的配置文件
- Hibernate总结(一)--之hibernate配置文件
- Hibernate 学习之HelloWorld
- Hibernate学习(2)------ Hibernate的配置文件
- hibernate入门(一)配置文件详解
- Vala学习笔记(一) - HelloWorld!
- Memcached 学习笔记(一)安装 & helloworld
- iOS技巧之获取本机通讯录中的内容
- 在编译中出现的问题,在新浪博客中找到的方法
- 主成分分析—Principal components analysis
- Jquery跨域调用
- 剖析网页从浏览器输入地址到加载完毕的全过程——域名解析
- hibernate学习(一)helloWorld,配置文件
- HTML转PDF(C#---itextsharp)
- Node.js真的无所不能?那些不适用的应用领域分析
- 查看现有项目的struts和hibernate和spring版本
- 使用Unity开发项目中遇到的坑~~
- opencms删除模块块异常处理 Exception org.opencms.lock.CmsLockException
- C++四种cast操作符
- 2013校选题 -- 推理问题
- 你是不是每天都在警告自己要好好学习绝不能分心玩手机