HIBERNATE - 技术教程文章

SSH框架的简化(struts2、spring4、hibernate5)【代码】【图】

目的:通过对ssh框架有了基础性的学习,本文主要是使用注解的方式来简化ssh框架的代码编写。注意事项:1、本文提纲:本文通过一个新闻管理系统的实例来简化ssh框架的代码编写,功能包括查询数据库中所有新闻信息,删除某条新闻信息。   2、本项目的搭建环境:Windows 8-64位,Eclipse(开发工具),jdk1.8.0_91,Tomcat 8.0,struts-2.3.30-apps,spring-framework-4.2.2.RELEASE,hibernate-release-5.2.2.Final,mysql数据库 第一...

Hibernate的学习详解(3)【代码】【图】

继承映射: 1.subclass 1 <hibernate-mapping package="com.atguigu.hibernate.subclass">2 3 <class name="Person" table="PERSONS" discriminator-value="PERSON">4 5 <id name="id" type="java.lang.Integer">6 <column name="ID" />7 <generator class="native" />8 </id>910 <!-- 配置辨别者列 --> 11 <discriminator column="TYPE" type="string"></di...

Hibernate使用技巧

如何定义实体持久化策略(或许也是整个应用)中最重要的就是实体定义。所有的对象都是从核心对象集合中繁衍而来的,因此正确的定义实体是非常重要的。下面是构建Hibernate/JPA实体方面我的一些建议。1. 创建一个新类,实现java.io.Serializable接口(并且显式定义serialVersionUID这个变量)。2. 增加类变量@Id Serializable id 和 @Version Date lastUpdated。这两个变量分别是数据库主键(primary key)和实现乐观锁(opti...

Hibernate uniqueResult方法的使用

以前写代码,总免不了编写登陆部分。在获取user的时候,只可能返回一个user实例,或者为null。以前使用以下方法实现。public User get(String id){ Session session=HibernateUtil.getSessionFactory().openSession(); String hql="from User u where u.id = ?"; List list=session.createQuery(hql).setString(0, id).list(); if (list.size()==1){ return (User)list.get(0); }else{ ...

Hibernate常见面试题(转)

在Java J2EE方面进行面试时,常被问起的Hibernate面试问题,大多都是针对基于Web的企业级应用开发者的角色的。Hibernate框架在Java界的成功和高度的可接受性使得它成为了Java技术栈中最受欢迎的对象关系影射(ORM)解决方案。Hibernate将你从数据库相关的编码中解脱了出来,使你可以更加专注地利用强大的面向对象的设计原则来实现核心的业务逻辑。采用Hibernate后,你就能够相当容易地在不同的数据库间进行切换,而且你还可以利用H...

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查询数据库,不管与当前实体关联的其他实体是否关闭了懒加载,它得到的始终是当前实体的代理对象,与之关联的其他实体也都以代理对象表示...