一.SQLQuery简介 SQLQuery接口用于接受一个sql语句进行查询,然后调用list()或uniqueResult()进行查询。 但是sql语句不会直接封装到实体对象里,需要手写代码才可以封装到实体中。 三.SQLQuery使用步骤 1.获取Hibernate的session对象 2.编写sql语句 3.通过Session对象获取SQLQuery实例 4.如果sql语句带有参数,则调用SQLQuery 语句 String sql = "SELECT * FROM person"; //获取SQLQuery对象 SQLQuery sqlQuery = session.createSQLQuery(sql 语句 String sql = "SELECT * FROM person WHERE id = ?
1、概述 hibernate和mybatis是当前流行的ORM框架。hibernate对数据库结构提供了较为完整的封装。mybatis主要着力点在于java对象与SQL之间的映射关系。 Hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 (5)sql直接优化上,mybatis要比hibernate方便很多 由于mybatis的sql都是写在xml里,因此优化sql比hibernate方便很多。 而hibernate的sql很多都是自动生成的,无法直接维护sql;虽有hql,但功能还是不及sql强大,见到报表等变态需求时,hql也歇菜,也就是说hql是有局限的;hibernate虽然也支持原生sql 总之写sql的灵活度上hibernate不及mybatis。
领8888元新春采购礼包,抢爆款2核2G云服务器95元/年起,个人开发者加享折上折
在Hibernate的配置文件hibernate.cfg.xml中有3个设置项跟显示SQL语句相关,他们的值都是boolean值: 1、show_sql:是否显示SQL语句 2、format_sql 如果设置了show_sql=true的话默认只打印SQL语句不会打印参数: 如果需要打印参数请在log4j配置文件:log4j.properties中加入: log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder =TRACE log4j.loggerorg.hibernate.type.descriptor.sql.BasicExtractor=TRACE 如果需要查看查询中命名参数的值,继续加入: log4j.logger.org.hibernate.engine.QueryParameters =TRACE log4j.loggerorg.hibernate.type.descriptor.sql.BasicExtractor=TRACE #查看查询中命名参数的值 log4j.logger.org.hibernate.engine.QueryParameters =DEBUG log4j.logger.org.hibernate.engine.query.HQLQueryPlan=DEBUG 使用时只需要将hibernate.cfg.xml中的show_sql
之前两篇介绍了使用Hibernate生成SQL全量脚本文件的方式,若需要生成增量脚本进行版本维护呢? 本次介绍通过Hibernate的SchemaUpdate生成SQL增脚本文件的方式,与SchemaExport生成全量脚本一样也可以通过两种方式生成。 目录 springBoot+jpa根据实体类注解生成SQL文件 springBoot生成SQL文件-使用Hibernate5的SchemaExport实现01 springBoot生成SQL文件-使用 Hibernate5的SchemaExport实现02 springBoot生成SQL文件-Hibernate5的SchemaUpdate实现 springBoot生成SQL文件-基于Liquibase 实现 springBoot生成SQL文件-总结 单独main函数生成 这个和之前的SchemaExport一样,只是createData方法换成了updatData方法。
报错如题: 原因sql 查询字段重名。如图第一列已经是id了。 给相同名字的字段加上别名以区别。如图红框中字段加上别名。
--Sql Server 驱动程序 eg. jtds-1.2.jar--> <property name="dialect">org.hibernate.dialect.SQLServerDialect -- 数据库密码--> <property name="connection.password">test</property> 如果出现如下错误,则可能是Hibernate SQL方言 (hibernate.dialect Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]'last_insert_id Microsoft SQL Server org.hibernate.dialect.SQLServerDialect SAP DB org.hibernate.dialect.SAPDBDialect org.hibernate.dialect.IngresDialect Progress org.hibernate.dialect.ProgressDialect Mckoi SQL org.hibernate.dialect.MckoiDialect
进入:http://www.hibernate.org 说明文档: 英文:http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN " 4 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 5 6 <! name="myeclipse.connection.profile"> 22 mysqlusers 23 </property> 24 <property name="format_<em>sql</em> ">true</property> 25 <property name="show_<em>sql</em>">true</property> 26 <property name="current_session_context_class
一、什么是 Hibernate? java 类型和 sql类型映射,面向对象设计和关系型数据库设计的映射,从而我们只需要将更多的精力放到业务中,而不是 sql 数据库方面。 在这段代码中可以执行 SQL 语句进行数据查询、插入、删除等。 工程,导入Hibernate的核心jar包、支持C3P0数据库连接池的jar包: c3p0-0.9.5.2.jar hibernate-c3p0-5.2.17.Final.jar org.hibernate hibernate-core 5.2.17.Final org.hibernate hibernate-c3p0 5.2.17.Final com.mchange c3p0 0.9.5.2 2
一般情况下,有两种方式可以进行Hibernate的配置,一种是通过配置文件进行配置,另一种是通过注解进行配置。 我将通过注解简单介绍Hibernate框架的配置。 Hibernate框架的配置一般可以分为以下几个步骤: 1.添加基本的Hibernate Jar包 2.添加注解的Jar包 3.编写Hibernate.cfg.xml文件 4.编写POJO文件,并编写注释 DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN " 4 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 5 6 <! 如果你用的是其他数据库,你可以点击这里查看相对应的Hibernate.cfg.xml文件:Hibernate 连接MySQL/SQLServer/Oracle数据库的hibernate.cfg.xml文件
-- 打印SQL --> <property name="<em>hibernate</em>.show_<em>sql</em>">true</property> <! -- 格式化SQL --> <property name="<em>hibernate</em>.format_<em>sql</em>">true</property> <! 用户名 u 密码 n 方言 l 可选的配置 n 显示SQL :hibernate.show_sql n 格式化SQL :hibernate.format_sql n 自动建表 -- 打印SQL --> <property name="<em>hibernate</em>.show_<em>sql</em>">true</property> <! -- 格式化SQL --> <property name="<em>hibernate</em>.format_<em>sql</em>">true</property> <!
SessionFactory sessionFactory = new Configuration().configure().
前言: 上一篇简单的讲解了下Hibernate的基础知识。这里对Hibernate比较重要的一些知识点,进行总结和归纳。 关于Hibernate映射 关于Hibernate的映射要说明的一点就是关于ID的访问权限,property以及field的区别。以前使用的时候根本没有注意过这个问题,这里简单的强调一下。 那么hibernate就会直接访问属性,而不会通过get set访问属性。 关于对象映射标识符OID 这一块相对来说也是hibernate的重点,什么是OID?如何指定OID? 上节说过,SessionFactory是重量级的缓存,里面包含了数据库的连接,预定义的SQL等等。而Session的缓存是轻量级的,里面包含一些增删改查的对象。 另外,我们频繁的修改一个对象,如果这个对象放在缓存中,而且还是用了事务,那么只有事务在commit的时候,才会执行真正的SQL语句! 这样就对对象与数据库的表进行了动态的映射!
DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http ://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <! -- 数据库方言 MySQL --> <property name="<em>hibernate</em>.dialect">org.hibernate.dialect.MySQLDialect</property -- 格式化输出生成的SQL语句 --> <property name="<em>hibernate</em>.show_<em>sql</em>">true</property> <property name ="<em>hibernate</em>.format_<em>sql</em>">true</property> <!
</property> <property name="<em>hibernate</em>.connection.driver_class"> com.hxtt.sql.access.AccessDriver DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"> <hibernate-configuration ="show_sql">true</property> <property name="connection.driver_class"> -- SQL方言,Access和SQLserver相近,所以这么写,严格意义会出错,但是尝试简单连接时可以的 --> <property name="dialect"> org.hibernate.dialect.SQLServerDialect
这篇主要讲 hibernate缓存 1.缓存的作用是为了提高效率 2.Hibernate的开发效率比较高,但是执行效率相对较低。 3.Hibernate提供了缓存来提高效率。 hibernate缓存分为:一级缓存,二级缓存,查询缓存。 4.一级缓存又称为 session缓存,是线程级别的缓存。 session.load(Book.class, 1); System.out.println(b.getName()+"---"+b.getAuthor()); } 在这两个方法中,第一次会执行sql 语句查询,第二次则不会生成sql语句查询,直接从缓存中取数据了。 在 hibernate.cfg.xml 的通用配置中,开启二级缓存和 3.x 不一致 <!
Hibernate: Encountered a duplicated sql alias [] during auto-discovery of a native-sq 查询sql为: StringBuffer sql = new StringBuffer(); sql.append("SELECT a.id,a.teacher_name,a.user_code,r.id AS competitionId ,r.competition_name,t.group_id,t.group_name"); sql.append(" FROM app_teacher a"); sql.append sql.append(" LEFT JOIN competition_record r"); sql.append(" ON t.competition_id = r.id") ; sql.append(" WHERE r.status = 0 AND a.user_code=?")
上一篇我们说了使用jpa配置属性直接生成SQL全量脚本文件的方式,想重新了解可以看:springBoot+jpa根据实体类注解生成SQL文件。 实现自动创建和更新数据库的表结构,就应该有办法通过程序创建全量SQL和增量SQL吧,通过搜索,找到了蛛丝马迹: 在Hibernate4.x中可直接使用: Configuration cfg = new ; import org.hibernate.boot.spi.MetadataImplementor; import org.hibernate.dialect.Dialect; import org.hibernate.dialect.MySQL5InnoDBDialect = "schema_%s.sql"; /** * 域类路径位置(如果范围很宽,则只能找到带有@Entity的类) */ private final static public static void main(String[] args) { createData(args); } /** * 生成全量SQL
在上篇springBoot生成SQL文件-使用Hibernate5的SchemaExport实现01中已经知道从Hibernate5.0.x开始通过程序生成SQL的方式已变成: ServiceRegistry schemaExport = new SchemaExport(metadata); schemaExport.create(true, true); 下面我们看下在springBoot中如何在启动过程中生成SQL 的配置,类似hibernate.cfg.xml。 ; import org.hibernate.boot.Metadata; import org.hibernate.boot.MetadataSources; import org.hibernate.boot.registry.StandardServiceRegistry org.hibernate.boot.Metadata; import org.hibernate.boot.spi.MetadataImplementor; import org.hibernate.tool.hbm2ddl.SchemaExport
这篇主要简单间接 hibernate查询 1.数据库操作中最重要的是查询,Hibernate提供了多种查询方式来帮助程序员快速实现查询功能。 有hql,本地sql查询,Criteria查询,example, oid等。 2.Hql 查询: Hql :hibernate query language,Hiberante查询语言。 这是一种面向对象的查询语言,和 sql 语句非常相似,对于查询关键字不区分大小写,其他的都区分大小写。 查询: hibernate支持使用 sql 来查询;因为 hql 语句不能针对特定数据库功能来实现。 ")) .uniqueResult(); System.out.println(result); } } 6.过滤查询 a).定义过滤器---在hibernate-mapping
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> < compile group: 'org.hibernate', name: 'hibernate-validator', version: '5.3.4.Final' compile group: 'javax.el 和JPA注解一样,如果验证注解添加到字段上,Hibernate就会直接读取字段的值。如果注解到Getter方法上,Hibernate就会调用方法取得值。 如果在一个集合上应用Valid注解, Hibernate就会递归验证集合中的每一个元素。 通过这个例子,大家应该明白了Hibernate Validator的基本内容。很多框架比如Spring也提供了相关的内容,能方便的将Hibernate Validator整合到项目中。
腾讯云数据库 SQL Server 是业界最常用的商用数据库之一, 拥有微软正版授权,避免未授权使用软件的风险。支持复杂的 SQL 查询,性能优秀,对基于 Windows 平台 .NET 架构的应用程序具有完美的支持。同时具有即开即用、稳定可靠、安全运行、弹性扩缩等特。
扫码关注腾讯云开发者
领取腾讯云代金券