【hibernate】应用程序级别的视图
【hibernate】应用程序级别的视图
转载:https://www.cnblogs.com/yangchongxing/p/10361281.html
在没有数据库修改权限时,像创建视图可以使用 hibernate 的应用程序视图。
@org.hibernate.annotations.Immutable 不可变
@org.hibernate.annotations.Subselect(value="select u.id as id, concat(u.username, '_account') as name from User u") 子查询
@org.hibernate.annotations.Synchronize({"User"}) 列出 select 中引用的所有表名,多个表用逗号 {"User", "Role"}
- package cn.ycx.study.hibernate.entity;
- import javax.persistence.Entity;
- import javax.persistence.Id;
- @Entity
- @org.hibernate.annotations.Immutable
- @org.hibernate.annotations.Subselect(value="select u.id as id, concat(u.username, '_account') as name from User u")
- @org.hibernate.annotations.Synchronize({"User"})
- //自定义视图
- public class UserView {
- @Id
- protected long id;
- protected String name;
- public long getId() {
- return id;
- }
- public void setId(long id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- @Override
- public String toString() {
- return "UserView [id=" + id + ", name=" + name + "]";
- }
- }
- package cn.ycx.study.hibernate;
- import static org.junit.Assert.assertTrue;
- import java.util.Arrays;
- import java.util.Collection;
- import java.util.List;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.junit.runners.Parameterized;
- import org.junit.runners.Parameterized.Parameters;
- @RunWith(Parameterized.class)
- public class UserViewTest {
- private Session session = null;
- public UserViewTest(SessionFactory sessionFactory) {
- this.session = sessionFactory.openSession();
- }
- @SuppressWarnings("rawtypes")
- @Parameters
- public static Collection sessionFactory() {
- return Arrays.asList(new Object[]{EnvironmentParameter.getSessionFactoryInstance()});
- }
- @Before
- public void setUp() throws Exception {
- this.session.beginTransaction();
- }
- @After
- public void tearDown() throws Exception {
- this.session.getTransaction().commit();
- }
- @Test
- public void test() {
- List list = this.session.createQuery("select u from UserView u").getResultList();
- for(Object o : list) {
- System.out.println(o);
- }
- System.out.println("view execute");
- assertTrue(true);
- }
- }
- <?xml version="1.0" encoding="UTF-8"?>
- <!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.connection.username">root</property>
- <property name="hibernate.connection.password">123456</property>
- <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
- <!-- 设置Hibernate的隔离级别 2:读已提交-->
- <property name="hibernate.connection.isolation">2</property>
- <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
- <!-- 控制台 SQL -->
- <property name="hibernate.show_sql">true</property>
- <!-- 是否对 SQL 格式化 -->
- <property name="hibernate.format_sql">true</property>
- <!-- 数据库关键字启用引号 -->
- <property name="hibernate.auto_quote_keyword">true</property>
- <!-- 给表明添加统一前缀
- <property name="hibernate.physical_naming_strategy">cn.ycx.study.hibernate.strategy.PhysicalNamingStrategyImpl</property>
- -->
- <!--
- 自动生成数据表的生成策略
- create: 每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行。
- create-drop: 每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除
- update: 第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。
- validate: 每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值
- -->
- <property name="hibernate.hbm2ddl.auto">update</property>
- <!-- 删除对象后,使其OID置为null
- <property name="use_identifier_rollback">true</property>-->
- <mapping class="cn.ycx.study.hibernate.entity.User"/>
- <mapping class="cn.ycx.study.hibernate.entity.Item"/>
- <mapping class="cn.ycx.study.hibernate.entity.UserView"/>
- </session-factory>
- </hibernate-configuration>
【hibernate】应用程序级别的视图的更多相关文章
- Asp.net 程序部署问题——在应用程序级别之外使用注册为 allowDefinition='MachineToApplicati错误信息
[转]在应用程序级别之外使用注册为 allowDefinition='MachineToApplicati 错误信息: ======================================== ...
- 错误 1 在应用程序级别之外使用注册为 allowDefinition='
原文:错误 1 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的,银流沙 昨天运行一个.NET网站项目时,出现了以下问题: 在应 ...
- iOS开发 ~应用程序设计理念:视图控制器(UIViewController)、视图(UIView)
应用程序设计理念:视图控制器(UIViewController).视图(UIView) 利用视图控制器(底层)管理视图(外观),一对一 1.视图的作用:负责显示的外观 2.视图控制器的作用:创建界面. ...
- hibernate ——helloWorld程序(annotation配置)
在 <hibernate ——helloWorld程序(XML配置)>基础上,修改.添加部分文件: 1.Teacher类和Teacher表 package com.pt.hiberna ...
- 微信小程序之可滚动视图 scroll-view 的使用注意
微信小程序之可滚动视图 scroll-view 使用注意: 1.scroll-view 中的需要滑动的元素不可以用 float 浮动: 2.scroll-view 中的包裹需要滑动的元素的大盒子用 d ...
- 错误 在应用程序级别之外使用注册为 allowDefinition='MachineToApplic
错误 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的.如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误. 如果 ...
- Hibernate 事物隔离级别 深入探究
目录 一.数据库事务的定义 二.数据库事务并发可能带来的问题 三.数据库事务隔离级别 四.使用Hibernate设置数据库隔离级别 五.使用悲观锁解决事务并发问题 六.使用乐观锁解决事务并发问题 Hi ...
- Hibernate 事物隔离级别
Hibernate事务和并发控制 ++YONG原创,转载请注明 1. 事务介绍: 1.1. ...
- Hibernate注解----类级别注解以及属性注解详解----图片版本
这篇文章是我在慕课网上学习Hibernate注解的时候进行手机以及整理的笔记. 今天把它分享给大家,希望对大家有用.可以进行收藏,然后需要的时候进行对照一下即可.这样能起到一个查阅的作用. 本文主要讲 ...
随机推荐
- webpack3、4的基本的使用方法
webpack的基本使用 webpack的安装 webpack的使用时需要借助 node 的环境的 在 node 中自动下载了 npm 这个包管理工具,之后的操作我们需要使用npm包管理工具进行相关操 ...
- jinjia2
ansible-playbook --become --become-method=su -K copy.yml - hosts: web remote_user: ansible tasks: - ...
- 报错:尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
问题: 在写windows服务时,发布后日志报错:尝试加载 Oracle 客户端库时引发 BadImageFormatException.如果在安装 32 位 Oracle 客户端组件的情况下以 64 ...
- 三维目标检测论文阅读:Deep Continuous Fusion for Multi-Sensor 3D Object Detection
题目:Deep Continuous Fusion for Multi-Sensor 3D Object Detection 来自:Uber: Ming Liang Note: 没有代码,主要看思想吧 ...
- [FPGA]Verilog利用PWM调制巧妙完成RGB三色彩虹呼吸灯(给简约的题目以美妙的解答)
概述 实现彩虹呼吸灯 题目就是这么简短,但这是目前我碰到的最有意思的一道题目,因为他有无数种解决方法,并且每一种都是那么高级或者巧妙,比如 可以利用3路不同初相的PWM调制信号驱动三颗RGB灯重叠呼吸 ...
- 2019-11-6:ubuntu 18安装tomcat 9.0
1,下载tomcat,选择自己想要的版本下载即可 下载官网:http://tomcat.apache.org/ 2,将下载的源码放到自己需要的位置,解压,我新建了一个tomcat目录 sudo mkd ...
- VS Code 中文社区正式成立啦!VS Code Day 圆满落幕!
背景简介 Visual Studio Code 是一款现代化轻量级代码编辑器,它免费.开源.跨平台.功能强大.本次 VS Code Day 是广大 VS Code 爱好者一起学习与交流的盛会,让我们对 ...
- c#-EntitySet<TEntity>
MSDN 解释: https://msdn.microsoft.com/zh-cn/library/bb341748.aspx 为 LINQ to SQL 应用程序中的一对多关系和一对一关系的集合方提 ...
- Linux目录结构-中部
第1章 /proc目录下 1.1 /proc/cpuinfo 系统cpu信息 [root@nfsnobody ~]# cat /proc/cpuinfo 一般常用的是 ...
- shell一键部署nginx+tomcat
1.首先拉取环境 tomcat需要用到jdk环境 提前准备好nginx源码包,放于指定目录下 vim test.sh #!/bin/bash yum -y install gcc gcc-c++ z ...