本文介绍一个比较复杂的自定义指令v-drag,它支持用鼠标来拖曳网页上的特定元素,参见例程1的v-drag.html。
本文选自孙卫琴的《精通Spring:Java Web开发技术详解》清华大学出版社出版技术支持网址为: www.javathinker.net/spring.jsp本书对应的直播和录播课: www.javathinker.net/zhibo.jsp
对于日期和数字等类型的请求参数,Spring MVC框架提供了内置的类型转换器,会进行简单的类型转换。例如在以下例程1的TestFormatController类中,showDate()方法有一个Date类型的date参数。Spring MVC框架的内置类型转换器会自动把String类型的date请求参数转换为Date类型的date方法参数。例程1 TestFormatControl
10月份带领小伙伴们巩固Java编程知识,掌握精髓编程思想和开发技巧,为接下来学习网络编程和Spring等奠定基础。本课程难度在中等以上,要求学生已经熟悉简单的Java编程语法。每晚包括两个课时。课后会安排练习作业。大家有问题请到QQ学习群(915851077)交流作业,老师课后也会在QQ群里给大家答疑。直播课时安排:www.javathinker.net/zhibo.jsp
后端Web开发我写了两本书《Tomcat与Java Web开发技术详解》和《精通Spring: Web技术开发详解》,其中《精通Spring》还在由清华大学出版社编辑排版中。写完了,不过瘾,应该再写一本介绍前端开发的书,这样才能给读者呈现如今流行的Web开发的整体架构,于是去年10月开始动工写Vue.js,用的是目前最新的Vue3版本,到今年6月中旬交稿,估计半年后可以和读者们见面哦。内容简介本书
时长:1个小时(1)介绍了Java对象持久化以及对象-关系映射的核心思想。(2)介绍了Hibernate API、JPA API和Spring Data API的用法,并介绍了它们的整合。(3)以Customer和Order类作为范例,来演示各种持久化操作。观看网址:https://www.bilibili.com/video/BV1oh411a7je/
这些年耕耘于Java技术书籍的创作,写了十来本书。许多热心读者喜欢和我交流所创作书的知识以及相关技术。为了便于大家互相探讨,互相学习,就设立了一个QQ学习群。如果您有疑问,欢迎到此群交流。
后端Web开发写了两本书《Tomcat与Java Web开发技术详解》和《精通Spring: Web技术开发详解》,其中《精通Spring》还在由清华大学出版社编辑排版中。 写完了,不过瘾,应该再写一本介绍前端开发的书,这样才能给读者呈现如今流行的Web开发的整体架构, 于是去年10月开始动工写Vue.js,用的是目前最新的Vue3版本,到今年6月中旬交稿,估计半年后可以和读者们见面哦。 这本书交
以下SQL代码定义了一个名为findCustomers的存储过程,p_age为输入参数,p_count为输出参数:delimiter//createprocedurefindCustomers(inp_ageinteger,outp_countinteger)beginselectcount(*)intop_countfromCUSTOMERSwhereAGE>p_age;selectnam
JPA的JPQL(JPAQueryLanguage,JPA查询语言)不仅可以检索数据,还可以用于进行批量更新、删除和插入数据。批量操作实际上直接在数据库中完成,所处理的数据不会被保存在Session的持久化缓存中,因此不会占用内存空间。Query.executeUpdate()方法和JDBCAPI中的PreparedStatement.executeUpdate()很相似,前者执行用于更新、删除和
JPAAPI也提供了处理事件的办法,它主要包括两个步骤:(1)创建监听器类。(2)在持久化类中通过@EntityListeners注解来注册监听器。1.创建监听器类监听器类不需要实现特定的接口,可以是任意的Java类,例如以下MyLastUpdateListener类就是一个监听器类。/*MyLastUpdateListener.java*/packagemypack;importjavax.pe
采用JPQL检索方式时,在应用程序中需要定义基于字符串形式的JPQL查询语句。QBCAPI提供了检索对象的另一种方式,它提供了一种更加面向对象的查询方法,应用程序不需要提供查询语句,而是通过QBCAPI中的相关的接口和类来设定需要检索的数据,包括设定检索条件等。QBCAPI位于javax.persistence.criteria包中,主要包括以下接口:CriteriaBuilder接口:它是生成C
JPQL(JPAQueryLanguage)是面向对象的查询语言,它和SQL查询语言有些相似。在JPA提供的各种检索方式中,JPQL是使用最广的一种检索方式。它具有以下功能:在查询语句中设定各种查询条件。支持投影查询,即仅检索出对象的部分属性。支持分页查询。支持连接查询。支持分组查询,允许使用having和groupby关键字。支持调用各种函数。支持子查询,即嵌入式查询。支持动态绑定参数。以下程序
当批量查询数据时(例如查询CUSTOMERS表中所有记录),如果数据量很大,会导致无法在用户终端的单个页面上显示所有的查询结果,此时需要对查询结果分页。假如CUSTOMER表中有99条记录,可以在用户终端上分10页来显示结果,每一页最多只显示10个Customer对象,用户既可以导航到下一页,也可以导航到前一页。Query接口提供了用于分页获取查询结果的方法:setFirstResult(intf
1.JPQL的参数绑定1.1按参数名字绑定在JPQL查询语句中定义命名参数,命名参数以“:”开头,形式如下:TypedQuery<Customer>query=entityManager.createQuery("fromCustomerascwherec.name=:customerName"+"andc.age=:customerAge",Customer.class);以上JPQ
JPQL查询语句中的groupby子句用于分组查询,它和SQL中的用法很相似。下面举例说明它的用法。(1)按照姓名分组,统计CUSTOMERS表中具有相同姓名的记录的数目://JPQL检索方式Iterator<Object[]>it=entityManager.createQuery("selectc.name,count(c)fromCustomercgroupbyc.name",O
1.立即左外连接以下程序覆盖映射代码中指定的检索策略,显式指定对与Customer关联的Order对象采用立即左外连接检索策略://JPQL检索方式List<Customer>result=entityManager.createQuery("fromCustomercleftjoinfetchc.orderso"+"wherec.namelike'T%'",Customer.clas
在受管理环境中,如JBoss应用服务器,由容器负责构造数据源,即javax.sql.DataSource的实例,然后把它发布为JNDI资源,Hibernate的DataSourceConnectionProviderImpl类充当这个数据源的代理,这个类位于org.hibernate.engine.jdbc.connections.internal包中。有些Servlet容器,如Tomcat,也能
Java应用通过JTAAPI声明JTA事务的步骤如下。(1)在Hibernate配置文件中配置数据源以及JTA平台属性:hibernate.connection.datasource=java:comp/env/jdbc/SAMPLEDBhibernate.transaction.coordinator_class=jtahibernate.transaction.jta.platform=JBo
乐观锁是由应用程序提供的一种机制,这种机制既能保证多个事务并发访问数据,又能防止第二类丢失更新问题。在应用程序中,可以利用Hibernate提供的版本控制功能来实现乐观锁。既可以用一个递增的整数来表示版本号,也可以用时间戳来表示版本号,跟踪数据库表中记录的版本。下面介绍利用整数类型的版本控制属性对ACCOUNTS表中记录进行版本控制的步骤。(1)在Account类中定义一个代表版本信息的versi
EntityManager的detach()方法用于从第一级缓存中清除一个特定的对象。对于第二级缓存,JPAAPI提供了javax.persistence.Cache接口,它具有控制第二级缓存的evict()方法,能从第二级缓存的实体数据缓存中删除特定的数据。javax.persistence.Cache接口只能控制实体数据缓存。如果要控制其他类型的缓存,需要使用HibernateAPI提供的or
在持久化类中通过注解设定的检索策略是固定的,要么为延迟检索,要么为立即检索。但应用逻辑是多种多样的,有些情况下需要延迟检索,而有些情况下需要立即检索。Hibernate允许在应用程序中覆盖持久化类中设定的检索策略,由应用程序在运行时决定检索对象图的深度。以下代码两次调用Query的getResultList()方法,都用于检索OID为1的Customer对象://第一个Query.getResul
对于一对多关联和多对多关联,应该优先考虑使用默认的延迟检索策略。在Customer类中,以下代码对orders集合属性采用延迟检索策略://采用默认的延迟检索策略@OneToMany(mappedBy="customer")privateSet<Order>orders=newHashSet<Order>();或者://显式设置延迟检索策略@OneToMany(mapped
在以下图中,ADDRESSES表的ID字段既是主键,同时作为外键参照CUSTOMERS表的主键,也就是说,ADDRESSES表与CUSTOMERS表共享主键。 在Customer类中,也是用@OneToOne注解来映射homeAddress属性:@OneToOne(cascade=CascadeType.ALL,mappedBy="customer")privateAddresshomeAddre
假定建立了从Category(商品类别)类和Item(商品)类的双向多对多关联。在Category类中需要定义集合类型的items属性,并且在Item类也需要定义集合类型的categories属性。下图显示了Category类和Item类的关联关系。下图显示了CATEGORIES表、ITEMS表和CATEGORY_ITEM表的结构。在Category类中,映射items属性的代码如下所示:@Man
Bag集合中的对象不按特定方式排序,但是允许有重复对象。在Java集合API中并没有提供Bag接口,Hibernate允许在持久化类中用List来模拟Bag的行为。假定Customer对象的images集合中允许存放重复的照片文件名,可以把images属性定义为List类型:privateList<String>images=newArrayList<String>();在
在持久化层,MyBatis与Hibernate一直分庭抗礼。JPA和Hibernate更加按照面向对象的思想进行对象-关系映射,使得Spring对Hibernate以及JPA抛出了橄榄枝,提供了紧密的集成,Spring Data API就建立在JPA的基础上。
全力以赴,专注创作大半年,这本Spring一书的初稿终于完成了。Spring家族中的多数成员都在本书中亮相,并大显身手。如SpringMVC框架、WebFlux框架,RESTFul风格、SpringDataAPI、SpringWebSocket、Spring和CXF整合、SpringCloud......这些成员都以Web开发为核心,循序渐进地串联起来,帮助读者理清纷繁复杂的Spring大家族的各
2019年5月从美国回到上海,由于一切都不安定,先在旅馆里宅了4个多月,写完《精通JPA与Hibernate:Java对象持久化技术详解》,就开始写这本书。现在,正是新冠病毒疫情还没结束之际,本书克服种种困难,如期和读者见面了。我们一不小心,就会被一种潜在的观念暗示:只要忙过了这一阵,将来就能过上高枕无忧的生活。实际上,生活中总是有各种意外的事情发生,小到个人家庭的琐事,大到国家社会的暂时的不安定
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号