HIBERNATE - 技术教程文章

hibernate调用oracle存储过程||函数

pakeage dao.Impl;//调用函数FUN_GET();public String get(String Id,String Name){return getSession().createSQLQuery("select FUN_GET(?,?) from dual") .setParameter(0, Id).setParameter(1, Name).uniqueResult() .toString();}//uniqueResult() 返回唯一值 //调用存储过程CallableStatement call = connection.prepareCall("{call ?:=FUN_GETSTUNO(?,?)}"); call.registerOutParameter(1, Types.VARCHAR); c...

Hibernate映射解析——七种映射关系

ORM,全称是(Object Relational Mapping),即对象关系映射。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。Hibernate正是实现了这种思想,达到了方便开发人员以面向对象的思想来实现对数据库的操作。 Hibernate在实现ORM功能的时候主要用到的文件有:映射类(*.java)、映射文件(*.hbm.xml)和数据库配置文件(*.properties/...

用Hibernate实现领域对象的自定义字段

导言在开发企业级业务应用(企业规模)时,客户往往要求在不修改系统源代码的情况下对应用对象模型的扩展性提供支持。利用可扩展域模型可以实现新功能的开发,而不需要额外的精力和成本应用的使用周期将被延长; 外部因素改变时,系统工作流也可以随之被修改;已经被部署的应用可以被“设定”,使其符合企业的特定情况。完成以上功能需求最简单、最具成本效益的方法应该是在应用中实现支持自定义字段的可扩展业务实体。原创整理不易...

Spring+Spring MVC+Hibernate框架搭建实例【代码】【图】

前言:这里只是说明整个搭建流程,并不进行原理性的讲解一 下面所需要用到的数据库配置:数据库方面,使用mysql创建一个users表,具体代码如下:DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `UserID` int(4) NOT NULL AUTO_INCREMENT, `UserName` varchar(16) NOT NULL, `Password` varchar(16) NOT NULL, `Telephone` varchar(16) NOT NULL, `Address` varchar(16) NOT NULL, PRIMARY KEY (`UserID`) ) EN...

【11.0】Hibernate缓存机制(一级和二级缓存)

1、 一级缓存,二级缓存,查询缓存;2、 一级缓存又称为session缓存。生命周期相同。周期较短。事务级别的缓存。get使用了一级缓存,用get查数据时,首先检查缓存中是否有该数据,如果有直接从缓存中取数据,如果没有再查询数据库,并且将数据放入缓存中。load也支持一级缓存。load还支持lazy.当load从数据库中查询数据后,也会将数据放入缓存。3、 unique/list查询不会去查看缓存,但是list查询的实体对象将会放入缓存中。4、 ...

hibernate中关系映射的配置问题【代码】【图】

部门和员工属于一对多的关系员工的账户属于一对一关系账户和权限属于多对多关系department.hbm.xml 1 <hibernate-mapping>2 <class name="com.demo.first.domain.Department" table="department">3 <id name="did" column="did">4 <generator class="native"/>5 </id>6 <property name="name" column="name"/>7 <property name="description" column="description"/>8 <s...

hibernate之关于使用连接表实现多对一关联映射

【Hibernate】之关于使用连接表实现多对一关联映射在我们项目使用中采用中间表最多的一般就是多对一,或者是多对多,当然一对一使用中间表也是可以的,但是这种几率通常少之又少!所以这里重点介绍多对一和一对多的采用中间表进行关联映射!依然采用Group和Person来描述这个逻辑!Annotations配置@Entity @Table(name="t_group") publicclass Group {private Integer id;private String name;@Id@GeneratedValuepublic Integer getI...

Hibernate框架增删改查【代码】

1package cn.happy.util;2 3import org.hibernate.Session;4import org.hibernate.SessionFactory;5import org.hibernate.cfg.Configuration;6 7/** 8 * 1.1用于生产session对象的工具类9*/10publicclass HibernateUtil { 11privatestatic Configuration cfg=new Configuration().configure(); 12privatestatic SessionFactory factory=cfg.buildSessionFactory(); 13//方法返回session14publicstatic Session getsession(){ 15ret...

SSH程序框架之Spring与HIbernate整合【代码】【图】

spring整合hibernate 有两种方式 1、注解方式 2、xml方式实现  Spring整合Hibernate有什么好处?  1、由IOC容器来管理Hibernate的SessionFactory  2、让Hibernate使用上Spring的声明式事务1.xml方式: 大概架构: 我们将会创建一个账户类,实现添加的功能 首先先添加Spring 和 HIbernate的jar包节点: 1 <dependencies>2 <dependency>3 ...

Hibernate关联映射之_多对一【代码】

多对一  Employee-Department对于 员工 和 部门 两个对象,从员工的角度来看,就是多对一的一个关系--->多个员工对应一个部门 表设计:  部门表:department,id主键  员工表:employee,id主键,depart_id作为外键,与部门表的主键对应 对象模型设计:  部门: 1package org.zln.hibernate.domain;2 3/** 4 * 部门Domain对象5 * Created by sherry on 000018/6/18 21:38.6*/ 7publicclass Department {8privateint id;9priv...

Hibernate注解:一对一主键关联【代码】

情形:两个表,my_site和my_site_company,通过主键site_id唯一关联。my_site的主键是自动增加,my_site_company的主键依赖于my_site。# # Source fortable my_site #DROPTABLEIFEXISTS `my_site`; CREATETABLE `my_site` (`site_id` int(11) NOT NULL AUTO_INCREMENT,`site_name` varchar(100) DEFAULTNULL COMMENT ‘站点名称‘,`short_name` varchar(100) DEFAULTNULL COMMENT ‘简短名称‘,PRIMARYKEY (`site_id`) ) ENGINE=My...

Hibernate Criterion

在查询方法设计上能够灵活的依据Criteria的特点来方便地进行查询条件的组装.Hibernate设计了CriteriaSpecification作为Criteria的父接口,以下提供了Criteria和DetachedCriteria. Criteria和DetachedCriteria的主要差别在于创建的形式不一样,Criteria是在线的,所以它是由HibernateSession进行创建的;而DetachedCriteria是离线的,创建时无需Session,DetachedCriteria提供了2个静态方法forClass(Class)或forEntityName(Name)进行Detac...

hibernate细节一

public void saveUser(){ Session session=JdbcUtil.getSession(); User user=new User(); user.setName("zjf2"); user.setAddress("gzy2"); Transaction tx=session.beginTransaction(); user.setAge(23); user.setEmploy(1002); session.save(user); System.out.println(user); tx.commit(); User user2=(User) session.get(User.class, user.get...

hibernate入门【代码】【图】

package com.test;import java.util.List;import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration;import com.hibernate.Usertest.Usertest;publicclass Test {publicstaticvoid main(String[] args) {String hql="from Usertest where id=?";String[] parm={"2"}...

根据错误原理解决Hibernate运行出现No CurrentSessionContext configured!错误

(1)异常信息如下:严重: Servlet.service() for servlet action threw exception java.lang.RuntimeException: <u>No CurrentSessionContext configured!</u>at com.lc.utils.HibernateUtil.executeQuery(HibernateUtil.java:56)at com.lc.service.UsersService.checkUser(UsersService.java:22)at com.lc.struts.action.LoginAction.login(LoginAction.java:38)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)...

hibernate查询方式(二)【代码】

1.HQL查询(hibernate query language) 操作的是实体类和属性 *查询所有记录 //1.hql查询操作会使用Query对象 // (1)写sql语句 创建Query对象,String hql = "from Student"; //from后面是实体类名Query query = session.createQuery("hql");//(2)调用方法得到结果 List<Student> list = query.list();//(3)遍历输出for( Student student : list){syso(student.getid()+":::"+student.getname()); } 2.条件查询 **...

Hibernate映射关系配置(二)【代码】

二、一对多(单向)Bean:publicclass Car implements Serializable{privateint id ;private String name ;private User user ;.... } publicclass User implements Serializable {privateint id ;private String name ;private Set<Car> cars ;.... }xml配置:Car.hbm.xml: <class name = "Car"><!-- id是来配置主键 name是类中的哪个属性和主键映射generator:表示主键的生成策略--><id name = "id"><generator class="native"/>...

hibernate的映射关系

1集合映射一个买家对应多个地址 Set集合的配置 <!--接下来我们应该配置的是我们的集合映射 set集合--> <set name="addresses" table="t_address"> <!--这里的这个key相当于是要配置外键 那么这个外键 是会自动的映射到当前的class的主键--> <!-- 下面的这个 u_id 会自动的映射成上面的主键的id值--> <key column="u_id"></key> <!--下面的这个列专门用来存放地址...

Hibernate连接各种数据库的配置

转自CSDN shl7765856的专栏:http://blog.csdn.net/shl7765856/article/details/7411987目录:1.MySql连接配置2.Sql Server连接配置3.Oracle连接配置4.DB2连接配置5.sybase连接配置6.informix连接配置7.PostgreSQL连接配置8.access连接配置 1. MySql连接配置 MySql数据库的hibernate连接设置,在hibernate.cfg.xml文件中 true net.sf.hibernate.dialect.MySQLDialect 50 30 com.mysql.jdbc.Driver jdbc:mysql://localhost/dbname? ...

关于hibernate.cfg.xml头文件DTD的引入【图】

今天配置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"><!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-confi...

【hibernate】Hibernate SQL 方言(hibernate.dialect)

参考如下:RDBMSDialectDB2org.hibernate.dialect.DB2DialectDB2 AS/400org.hibernate.dialect.DB2400DialectDB2 OS390org.hibernate.dialect.DB2390DialectPostgreSQLorg.hibernate.dialect.PostgreSQLDialectMySQL5org.hibernate.dialect.MySQL5DialectMySQL5 with InnoDBorg.hibernate.dialect.MySQL5InnoDBDialectMySQL with MyISAMorg.hibernate.dialect.MySQLMyISAMDialectOracle(any version)org.hibernate.dialect.Oracl...

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was alread---------程序报错

今天遇到了这个问题:org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session:……找其原因是因为同一个object,如一个person在seession里保存了一份,而增加的别的object,如company的时候,由于做了关联关系,从数据库里又get了一个person,而这个person和seession里的person是同一个,把get出来的person set 到了company里,像这样,compnay.se...

1、hibernate的简单配置【代码】

1、关于hibernate.cfg.xml 文件的配置<!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="hibernate.dialect">org.hibernate.dialect.MySQLMyISAMDialect</property><property name="hibernate.connection.driver_class">com....

hibernate 主键生成策略

Hibernate中主键的生成策略主要有以下几种:(1)uuid原理是使用128位的uuid算法产生主键,从而能够确保网络环境下的一致性。使用此生成策略时,实体类的主键是String类型的,映射成表中字段为varchar。适用所有数据库。 [java] view plaincopyprint? <id name="id" column="id"> <span style="white-space:pre"> </span><generator class="uuid"></generator> </id> (2)native 原理是根据数据库类型自动选择sequence、ide...

Hibernate中get和load的区别

get获取的对象立即执行sql查询数据库中当前实体表中的数据,如果外键关联的其他实体表如果配置了懒加载关闭,则也会查询出外键关联的其他实体表中的数据,否则外键关联的其他实体表则以代理对象表示(称其为代理对象我也不确定对不对,只知道里面只保存了id和一些关键信息)。load不会立即执行sql查询数据库,不管与当前实体关联的其他实体是否关闭了懒加载,它得到的始终是当前实体的代理对象,与之关联的其他实体也都以代理对象表示...

菜鸟学SSH(十五)——简单模拟Hibernate实现原理

之前写了Spring的实现原理,今天我们接着聊聊Hibernate的实现原理,这篇文章仅仅是简单的模拟一下Hibernate的原理,主要是模拟了一下Hibernate的Session类。好了,废话不多说,先看看我们的代码:package com.tgb.hibernate;import java.lang.reflect.Method; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.HashMap; import ja...

【Hibernate】(3)Hibernate单表操作【图】

1. 单一主键这个是在我们生成的Student.hbm.xml中配置的:<hibernate-mapping><class name="com.thr.bean.Student" table="STUDENT"><id name="id" type="int"><column name="ID" /><generator class="assigned" /></id>我们将hbm2ddl.auto配置为update <property name="hbm2ddl.auto">update</property>(1). assigned:由Java应用程序负责生成(手工赋值)手工赋值就是我们之前所写的那种方式: Student s = new Student();s.se...

Hibernate3升级到Hibernate4后的修改点

Hibernate3升级到Hibernate4后的修改点?>>hibernate.cfg.xml1, 修改DTD文件地址:将http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd?修改成 http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd修改前:<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">?修改后:<!DOCTYPE hibern...

Hibernate【缓存】知识要点【代码】【图】

对象状态Hibernate中对象的状态:临时/瞬时状态持久化状态游离状态学习Hibernate的对象状态是为了更清晰地知道Hibernate的设计思想,以及是一级缓存的基础...当然啦,也就一点点知识临时/瞬时状态当我们直接new出来的对象就是临时/瞬时状态的..该对象还没有被持久化【没有保存在数据库中】不受Session的管理持久化状态当保存在数据库中的对象就是持久化状态了当调用session的save/saveOrUpdate/get/load/list等方法的时候,对象就是...

Hibernate【性能部分】【代码】【图】

一。延迟加载。 为什么要使用延迟加载?   对于需要数据的时候才加载这种方式,就是一种优化方式 Hibernate中的三种懒加载(一)类的懒加载 @Testpublicvoid testClass_Lazy(){SessionFactory sessionFactory=SessionFactoryUtils.getSessionFactory();Session session=sessionFactory.openSession();Privilege privilege=(Privilege)session.load(Privilege.class, 1); //没有发出sql语句privilege.getName();//真正加载属性...