首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

day29_Hibernate学习笔记_01

即:会自动创建表结构和自动维护表结构。              create(很少):无论是否存在表结构。每次启动Hibernate都会重新创建表结构(数据会丢失)。              ...create-drop(极少):无论是否存在表结构。每次启动Hibernate都会重新创建表结构,每次Hibernate运行结束时,删除表结构。              ...所有属性提供public访问控制符的set和get方法(JavaBean)。 标识属性应尽量使用基本数据类型的包装类型(因为基本数据类型有默认值,会给数据库造成误会)。...代理主键:在业务中,不存符合以上3个条件的属性,那么就增加一个没有意义的列,作为主键。 6.4、基本数据与包装类型 基本数据类型和包装类型对应hibernate的映射类型相同。...基本类型无法表达null、数字类型的默认值为0。 包装类默认值是null。当对于默认值有业务意义的时候需要使用包装类。

1.1K20

Controller层代码这么写,简洁又优雅!

那这样就可以把统一包装的工作放到这个类里面。...cast to java.lang.String 问题 如果直接使用 ResponseBodyAdvice,对于一般的类型都没有问题,当处理字符串类型时,会抛出 xxx.包装类 cannot be cast...to java.lang.String 的类型转换的异常 在 ResponseBodyAdvice 实现类中 debug 发现,只有 String 类型的 selectedConverterType...有些时候 JSR303 标准中提供的校验规则不满足复杂的业务需求,也可以自定义校验规则 自定义校验规则需要做两件事情 自定义注解类,定义错误信息和一些其他需要的内容 注解校验器,定义判定规则 //自定义注解类...,但是异常返回结构和正常返回结构不一致 自定义异常是为了后面统一拦截异常时,对业务中的异常有更加细颗粒度的区分,拦截时针对不同的异常作出不同的响应 而统一拦截异常的目的一个是为了可以与前面定义下来的统一包装返回结构能对应上

81820
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SpringBoot入门建站全系列(三十三)集成validator校验接口数据

    short,int,long和原始类型的相应的包装类; @Future 检查带注释的日期是否是将来 java.util.Date,java.util.Calendar,java.time.Instant...@Max指定的value值 BigDecimal,BigInteger,byte,short,int,long和原始类型的相应的包装类; @Min(value=x) 验证注解的元素值大于等于@Min指定的...BigDecimal,BigInteger,byte,short,int,long和原始类型的相应的包装类 @NegativeOrZero 检查元素是负数还是零。...BigDecimal,BigInteger,byte,short,int,long和原始类型的相应的包装类 @Positive 检查元素是否严格为正。零值被视为无效。...BigDecimal,BigInteger,byte,short,int,long和原始类型的相应的包装类 @NegativeOrZero 检查元素是正数还是零。

    1.1K10

    【hibernate validator】(二)声明和验证Bean约束

    字段级别约束 不支持静态类型字段 验证引擎直接访问实例变量,不会调用属性的访问器 在验证字节码增强的对象时,应适用属性级别约束,因为字节码增库无法通过反射确定字段访问...约束继承 在一个类实现接口或扩展另一个类时,在超类上声明的所有约束注释都以与该类本身上指定的约束相同的方式约束 package org.hibernate.validator.referenceguide.chapter02...和原始类型的相应的包装; HV额外支持:的任何子类型CharSequence(评估字符序列表示的数值),Number和的任何子类型javax.money.MonetaryAmount @Min...(value=) 是否大于或等于该值 BigDecimal,BigInteger,byte,short,int,long和原始类型的相应的包装; HV额外支持:的任何子类型...检查带注释的值是否介于(包括)指定的最小值和最大值之间 BigDecimal,BigInteger,CharSequence,byte,short,int,long和原始类型的相应的包装

    26940

    SSH框架之旅-hibernate(2)

    实体类中要有属性作为唯一值 hibernate 要通过唯一的标识区分内存中是否有一个持久化类,在 java 中是通过地址区分是否是同一个对象的,在关系型数据库的表中是通过主键区分是否有一条记录的,在内存中...实体类属性的基本类型建议使用基本数据类型的包装类 包装类和基本数据类型的默认值是不同的,比如 int 类型的默认值是 0,Integer 类型的默认值是 null。...并且包装类的语义描述比基本数据类型更加清晰,比如,一个学生的成绩,可以是 0 分,也可以是 100 分,但如果这个学生没有成绩,用基本的数据类型就很难表示了,但包装类就可以用 null 来表示,这样不会产生歧义...自定义的工具类,方便操作 hibernate。...在执行完查询操作后,把查询到的数据放到缓冲区,并且复制一份数据到快照区,直接通过 set 方法改变持久化对象的属性值,也会改变缓冲区里面的内容,在提交事务时比较缓冲区和快照区里面的数据是否一致,如果不一致

    93230

    Hibernate框架学习之注解映射实体类

    四、特殊属性的映射 这里的特殊属性指的是实体类中属性类型非常规的基本类型、包装类型、引用类型,而是类似于集合类型、自定义类型等。我们首先看对于集合类型的属性映射情况。...2、组件属性映射 所谓的组件类型就是指我们自定义的类类型,在某些情况下,实体类中包含自定类型也是很常见的,那么对于我们自定义的类型该如何来映射到数据表呢?...当Hibernate对整个类路径进行扫描的时候,就会注册该类为一个组件类型,那么当我们在实体类中引用该类型的时候,hibernate就能找到相应的组件类型。...当我们通过数据表获取userinfo实例的时候,hibernate判断userinfo中有一个组件类属性,于是创建组件类实例并装载相应的数据表中的数值赋值给userinfo的组件类型属性。...Hibernate选择将集合中的复合类型拆分成多个字段,其他的和普通的集合属性映射并没有太大变化。 ?

    3.2K90

    Mybatis框架复习大纲【面试+提高】

    1.Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句。...但是Hibernate的学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。...在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 ?...构造函数是private修饰,具有一个static的局部instance变量和一个获取instance变量的方法,在获取实例的方法中,先判断是否为空如果是的话就先创建,然后返回构造好的对象。...其别名也可以称为包装器(Wrapper),与适配器模式的别名相同,但它们适用于不同的场合。根据翻译的不同,装饰模式也有人称之为“油漆工模式”,它是一种对象结构型模式。 ?

    1.2K70

    码云推荐 | Java 持久层工具 jSqlBox

    作者在完成 jBeanBox 项目后,发现 Hibernate 和 MyBatiis 这两个流行的持久层工具也都存在这个问题,这是 jSqlBox 项目产生的原因。...jSqlBox 虽然最初目的是给 Hibernate 加一个动态配置,但考虑到实体容器开发及使用的复杂性,以及个人水平有限,借鉴了 MyBatis 的做法,即在运行期如需用到 OR 映射时,在程序中动态配置并完成...与 MyBatis 不同的是 jSqlBox 在易用性上作了极大改进,取消了繁琐的 XML 配置和注解,简单的 CRUD 之类 SQL 更不必手工创建。...支持多种主键生成方式,与 Hibernate / JPA 类似,目前支持 9 种主键生成方式,也可自定义主键生成类。...暂不支持 Blob,Clob 类型的包装,待今后版本加入,目前可利用内核的 JDBCTemplate 来进行 Blob,Clob 字段的存取。

    2.1K70

    Javaweb 后端框架总结

    SQL查询 Spring Data 是Spring 框架的一个子项目,他的目的简化和不同类型数据库之间的操作,包括关系和非关系型,Spring Data JPA是一个支持JPA的子项目,但不能单独使用,...一个代理类只能对一个业务接口的实现类进行包装,如果实现了多个业务接口的话就要定义很多实现类和代理类,代码的重用性不。 动态代理模式: 产生的代理对象和目标对象实现了共同的接口 JDK代理。...cglib产生的代理类是目标类的子类 动态代理 JDK动态代理 JDK动态代理所用到的代理类在程序调用到代理类对象的时候才由JVM真正创建,JVM根据传递进来的业务实现类对象以及方法名,动态的创建了一个代理类的...JDK动态代理的代理对象在创建时,需要使用业务实现类所实现的接口作为参数,如果业务实现类是没有是现实接口而是直接定义业务方法的话,就无法使用JDK动态代理了,并且,如果业务实现类中新增加了接口中没有的方法...静态代理是通过在代码中显式的定义一个业务实现类一个代理,在代理类中对同名的业务方法进行包装,用户通过代理类调用被包装过的业务方法。

    1.2K40

    MyBatis面试题总结「建议收藏」

    /与Hibernate有哪些不同? 1.3 Mybaits的优点? 1.4 MyBatis框架的缺点? 1.5 #{}和${}的区别? 1.6 怎么解决实体类中的属性名和表中的字段名不一样的问题?.../与Hibernate有哪些不同? ORM是对象和关系之间的映射,包括对象->关系和关系->对象两方面。...:先从Configuration配置类MapperRegistry对象中获取mapper接口和对应的代理对象工厂信息,再利用代理对象工厂MapperProxyFactory创建实际代理类,最后在MapperProxy...具体子类实现,与SimpleExecutor不同的是,在doQuery方法中,使用预编译PrepareStatement对象访问数据库,访问时,会重用缓存中的statement对象,而不是每次都创建新的...在Mybatis配置文件中,可以指定默认的ExecutorType执行器类型,也可以手动给DefaultSqlSessionFactory的创建SqlSession的方法传递ExecutorType类型参数

    72320

    Mybatis_day01

    解决问题: 当我们的代码程序出现重复代码时怎么办?将重复的代码抽离出来成为独立的一个类,然后在各个需要使用的地方进行引用。...2.传统的dao的开发方式 2.1.思路 程序员需要编写dao接口和dao接口实现类 在dao实现类里面进行注入sqlSessionFactory,然后通过sqlSessionFactory创建sqlSession...:dao层代码是被业务层公用的,即使是dao层代码参数只能是一个 业务层包装成不同类型pojo都可以满足不同业务需求。...持久层方法参数可以是map,基本类型,自定义对象,包装类型. 4.sqlMapConfig.xml 4.1.配置内容 SqlMapConfig.xml中配置的内容和顺序如下: properties(属性...这是因为我们可以在隔离类里面进行封装很多参数,并且我们还有一些其他和业务不相关的查询条件。我们都可以定义在custom中。

    1.1K70

    SpringMVC参数校验

    我们要用到JSR-303的规范,那么就需要导入实现类的jar包,比如Hibernate Validator也是我们后面使用的jar包。...,所以JSR-303出场 JSR-303是基于注解校验的,注解已经实现了各种限制,我们可以将注解标记在需要校验的类的属性上,或是对应的setter方法上(笔者习惯标记在属性上) 导入Hibernate...JSR-303的简单使用 3.1 在需要校验的属性上标记注解 注解有个属性message存放自定义的错误信息 public class User { @NotNull(message = "名字不能为空...,开始真是不知如何解决 解决方法 使用包装类Integer,类型对不上就不匹配了,包装类还会自动装箱和拆箱,所以很方便解决空值问题 // Integer id // 替换成包装类之后传的参数为,空值不接收即为...null User{id=null, name='jiafu liu', email='1210911104@qq.com'} 教训是:对于可能会传空值的属性一般会用包装类型

    1.1K10

    Controller层代码这么写,简洁又优雅!

    gitee.com/zhijiantianya/yudao-cloud 视频教程:https://doc.iocoder.cn/video/ 改造 Controller 层逻辑 统一返回结构 统一返回值类型无论项目前后端是否分离都是非常必要的...那这样就可以把统一包装的工作放到这个类里面: supports: 判断是否要交给 beforeBodyWrite 方法执行,ture:需要;false:不需要 beforeBodyWrite: 对 response...自定义校验规则需要做两件事情: 自定义注解类,定义错误信息和一些其他需要的内容 注解校验器,定义判定规则 //自定义注解类 @Target({ElementType.METHOD, ElementType.FIELD...JSR303 提供了丰富的参数校验规则,再加上复杂业务的自定义校验规则,完全把参数校验和业务逻辑解耦开,代码更加简洁,符合单一职责原则。...,但是异常返回结构和正常返回结构不一致 自定义异常是为了后面统一拦截异常时,对业务中的异常有更加细颗粒度的区分,拦截时针对不同的异常作出不同的响应。

    36620

    SSH框架之Hibernate第二篇

    get/set方法 (4): 属性尽量使用包装类类型 : 默认值不同的,包装类默认值null,基本数据类型默认0...(6): 类中需要提供标识属性(OID), 与表中主键建立映射关系 : Hibernate根据标识属性来判断对象是否是同一个的....不用自己去写代码保证非空唯一. 1.2 Hibernate 主键生成策略: 1.2.1 区分自然主键和代理主键 自然主键 : 创建表的时候,使用的是实体中的自身属性作为表的主键....native : 本地策略,根据底层的数据库不同,自动选择使用identity还是sequence. uuid : 随机字符串,适用于字符串类型的主键....总结: 以后如果是针对是数值型,选择用native,如果是varchar类型,可以选择用uuid 但是也可以不用hibernate维护,自己在程序中手动设定唯一非空(assigned)

    52320

    走进Java接口测试之持久层框架Spring-data-jpa

    虽然一些基础的数据访问已经可以得到很好的复用,但是在代码结构上针对每个实体都会有一堆 Dao的接口和实现。...实体类声明 @Entity 关系型数据库支持类型、声明 @Document 为 mongodb支持类型,不同的数据源使用不同的实体就可以了 interface PersonRepository extends...create-drop:每次加载 hibernate 时根据 Entity 类生成表,但是sessionFactory一关闭,表就自动删除。...update:最常用的属性,第一次加载 hibernate时根据 Entity 类会自动建立起表的结构(前提是先建立好数据库),以后加载 hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行...validate:每次加载 hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

    2.5K20

    MyBatis学习笔记(一) --- MyBatis入门

    7、mybatis与hibernate不同 Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的...但是Hibernate的学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。...Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同 步骤一:创建Mapper.xml(映射文件):          定义mapper映射文件UserMapper.xml...中定义的statement的id相同 Mapper接口方法的输入参数类型和mapper.xml中定义的statement的parameterType的类型相同 Mapper接口方法的输出参数类型和mapper.xml...2、namespace mybatis官方推荐使用mapper代理方法开发mapper接口,程序员不用编写mapper接口实现类,使用mapper代理方法时,输入参数可以使用pojo包装对象或map对象

    1.3K30

    芋道 Spring Boot 参数校验 Validation 入门

    长度检查 @Size(max, min) :检查该字段的 size 是否在 min 和 max 之间,可以是字符串、数组、集合、Map 等。...在大多数项目中,无论是 Bean Validation 定义的约束,还是 Hibernate Validator 附加的约束,都是无法满足我们复杂的业务场景。所以,我们需要自定义约束。...在一些业务场景下,我们需要使用分组校验,即相同的 Bean 对象,根据校验分组,使用不同的校验规则。咳咳咳,貌似我们暂时没有这方面的诉求。即使有,也是拆分不同的 Bean 类。...省略 set/get 方法 } 创建了 Group01 和 Group02 接口,作为两个校验分组。不一定要定义在 UserUpdateStatusDTO 类中,这里仅仅是为了方便。...# 文件路径基础名 encoding: UTF-8 # 使用 UTF-8 编码 然后,我们在 resources/i18 目录下,创建不同语言的 messages 文件。

    4.3K52

    JPA作持久层操作

    JPA(Hibernate是jpa的实现) jpa是对实体类操作,从而通过封装好的接口直接设置数据库的表结构。...: #配置为自动创建 ddl-auto: update 创建实体类 @Data @Entity //表示这个类是一个实体类 javax包下的 @Table(name = "users...repo包,建Repository类 每一个表都要设置相应的Repository实现类,service层可以通过该类对象操作数据库(因为该类封装了操作数据库的方法集) 如果需要的操作没有被封装,还可以在...Repository类中用已经封装的方法自定义新的方法(自定义规则在下面) 注:JpaRepository有两个泛型,前者是具体操作的对象实体,也就是对应的表,后者是ID的类型 @Repository...,可以设置懒加载,这样只有在需要时才会向数据库获取: 设置懒加载后,使用懒加载设置过的属性时的方法需要在事务环境下获取(因为repository方法调用完后Session会立即关闭 @JoinColumn

    1.2K10

    设计模式 | 适配器模式及典型应用

    根据适配器类与适配者类的关系不同,适配器模式可分为对象适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承(或实现)关系。...增加了类的透明性和复用性,将具体的业务实现过程封装在适配者类中,对于客户端类而言是透明的,而且提高了适配者的复用性,同一个适配者类可以在多个不同的系统中复用。...灵活性和扩展性都非常好,通过使用配置文件,可以很方便地更换适配器,也可以在不修改原有代码的基础上增加新的适配器类,完全符合“开闭原则”。...,调用 supportsAdvice() 方法来判断 Advice 对应的类型,然后调用 getInterceptor() 创建对应类型的拦截器 ?...Spring MVC 中的 Controller 种类众多,不同类型的 Controller 通过不同的方法来对请求进行处理。

    1.6K30

    Hibernate框架学习之二

    因为在 Hibernate的底层需要使用反射生成类的实例。 持久化类的属性需要私有,对私有的属性提供公有的get和set方法。因为在 Hibernate底层会将查询到的数据进行封装。...持久化类的属性要尽量使用包装类的类型。因为包装类和基本数据类型的默认值不同,包裝类的类型语义描述更清晰而基本数据类型不容易描述。...在Java中通过地址区分是否是同一个对象的,在关系型数据库的表中是通过主键区分是否同一条记录。那么 Hibernate就是通过这个OID来进行区分的。 ...Hibernate为了更好的来管理持久化类,将持久化类分成了三种状态。在 Hibernate中持久化的对象的三种状态分别是瞬时态、持久态和脱管态。...对象的查询,在 Hibernate中 Criterion对象的创建通常是通过 Restrictions工厂类完成的,它提供了条件查询方法。

    82650
    领券