有哪些关于JavaWeb后端的书籍?
从加入BAT起,就一直从事后端开发,从PHP到JAVA,也经历过自学成才的过程。接下来我就根据我的经验来为大家分享我读过的,javaweb后端开发的好书。《thinkinginjava》中文版叫《Java编程思想》,是Java学习领域的圣经,也是入门书。基本上,Java成手都会推荐新人来看这本,里面详尽介绍了Java的基本概念,对于打牢Java基础,后面不论是做web开发,还是app开发,都有非常重要的作用。不过这本书过于厚重,里面有些Java的使用方式已经过时,因此只建议读懂这本书的前半部分,夯实基础即可。《headfirstjava》这本书可以与上面的那本辅助着看,相对来说,它读起来更加轻快,里面很多结合实际生活的例子也很幽默,算是深入浅出。或者可以考虑先读这本,把基础打个七分牢固,然后再去读《thinkinginjava》来补充最后的三分。《headfirstservlet》javaweb开发少不了要知道servlet,就算现在有很多成熟的框架,比如SSH,SSM,SPRINGBOOT,其中已经将servlet的部分封装了起来,但是发展到后期想往高级Java工程师方向前进的话,还是需要去了解很多底层的原理。《图解HTTP》javaweb开发自然少不了web相关的。作为目前最广泛使用的http协议,在开发过程中自然也要掌握相关的知识,才能写出优雅美丽的接口。《JavaEE互联网轻量级框架整合开发》目前所有开发Javaweb的项目都会选择使用框架,从而减轻程序员的很多负担,目前常用的框架SSM已经逐渐把SSH淘汰,因此,非常建议了解这本介绍SSM框架的书,能够大大提高工作效率。《深入浅出SpringBoot2.x》最后是这本springboot,因为springboot目前势头更加强劲,由于它能够仅仅依赖注解就完成配置,而不需要很麻烦的xml文件,我们公司很多项目已经淘汰了SSM,用上了springboot。以上是我的浅见,欢迎各位在下方评论区给我交流点赞。
关于javaweb,有哪些令你称之“惊艳”的书?
毛遂自荐,推荐一本书《Servlet/JSP深入详解》,惊艳不敢说,让你掌握JavaWeb开发,弄清JavaWeb程序的原理没什么问题,之后再学学SpringMVC框架就可以了。《ServletJSP深入详解——基于Tomcat的Web开发(畅销书升级版)》共分3篇,分别为Servlet篇、JSP篇及其应用篇,书中展示了JavaWeb开发中各种技术的应用,帮助读者快速掌握JavaWeb开发。在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。大部分章节都提供了多个例子,而且很多例子都是目前Web开发中经常使用的,具有相当高的实用价值。《ServletJSP深入详解——基于Tomcat的Web开发(畅销书升级版)》不仅可以作为JavaWeb开发的学习用书,还可以作为从事JavaWeb开发的程序员的参考用书和必备手册。
Hibernate的多对一和一对多操作实例
Hibernate 的一对多和多对一操作真的很方便 如果系统采用Hibernate作为持久层 完全可以把对应的一对多和多对一逻辑关系放在Hibernate里面控制 减少数据库的负担 而且也更清晰 多对一和一对多概念 其实这个概念上来说很简单 比如一个客户可以有多个订单 多个订单属于同一个客户 就是最基本的一对多 和多对一 数据库使用中 感觉多对一和一对多算是比较常见的逻辑关系了 我曾经做过一些数据库 比如某些 *** 部门的 其表单很设计的很简单粗糙 甚至连主键都没有 完全靠在事务层补全这些关系 其实通过Hibernate持久层来实现逻辑关系也是很不错的方法 下面的例子 就是数据库逻辑上基本没有定义 主要放在持久层里面 这个也主要是我对数据库操作属于半通水的原因 数据库层 这里面有两个表单 一个CUSTOMER 客户表单 一个是ORDERS 订单表单 生成客户表单 这个是在SQLServer里面做的 其实其他都一样 因为逻辑关系在Hibernate上面 id是主键非空 其他可以为空 CREATETABLE[dbo] [CUSTOMER]( [id][numeric]( )NOTNULL [name][varchar]( )NULL [age][int]NULL CONSTRAINT[PK_CUSTOMER]PRIMARYKEY) 订单表单 id为主键非空 CUSTOMER_id是对应客户主键 也非空 这里不做外键设置 CREATETABLE[dbo] [ORDERS]( [id][numeric]( )NULLPRIMARYKEY [CUSTOMER_id][numeric]( )NOTNULL [ORDER_NUMBER][varchar]( )NULL [PRICE][numeric]( )NULL ) Hibernate设定 HIbernate里面 一对多的对象体现 是客户有一个集合set set里面放著对应订单 而多对一体现 是订单里面有一个CUSTOMER对象 表明该订单所属的客户 其中 CUSTOMER类为 publicclassCustomerimplementsjava io Serializable{ privateLongid; privateStringname; privateIntegerage; privateSetrderses=newHashSet(); } 后面的getXXX和setXXX方法就省去了 同样订单类就是 publicclassOrdersimplementsjava io Serializable{ privateLongid; privateCustomercustomer; privateStringorderNumber; privateDoubleprice; } 而对应hbm文档 就是map文档如下 CUSTOMER hbm xml <!DOCTYPEhibernate mappingPUBLIC //Hibernate/HibernateMappingDTD //EN mapping dtd > <! MappingfileautogeneratedbyMyEclipsePersistenceTools > 这个里面 其他都很简答了 其中表示主键值自动增加 这个主要针对字符串对应的 主要体现多对以的是 其中 set表示 对应集合 fetch和lazy主要是用来级联查询的 而cascade和inverse主要是用来级联插入和修改的 这几个主要包括对集合的控制 表示对应类 即set里面包含的类 而key主要是用于确定set里面对应表单列 ORDERS的hbm <!DOCTYPEhibernate mappingPUBLIC //Hibernate/HibernateMappingDTD //EN mapping dtd > <! MappingfileautogeneratedbyMyEclipsePersistenceTools > 表示CUSTOMER熟悉对应的类 和其作为key的列名 上面这些都可以在MyEclipse里面自动生成 另外注意的一点是 在生成的DAO里面 涉及表单操作的save()和delete()方法 必须要事件提交 数据库才有反映 可以就该Hibernate xml 或者用下面这样代码来实现 Sessionse=getSession(); Transactiontx=se beginTransaction(); se delete(persistentInstance); //se save(instance); mit(); 验证效果 新增用户 如果新增一个用户 该用户里面包含有两个表单 那么 由于持久层已经实现了逻辑关系 只要用户类里面的set包含了表单 则表单可以自动增加 实现代码 CustomerDAOcd=newCustomerDAO(); Customerxd=newCustomer( 王小虎 null); Ordersord =newOrders(); ord setCustomer(xd); ord setOrderNumber( 王小虎的买单 ); Ordersord =newOrders(); ord setCustomer(xd); ord setOrderNumber( 王小虎的买单 ); Setrderses=newHashSet(); orderses add(ord ); orderses add(ord ); xd setOrderses(orderses); cd save(xd); 代码里面 加入一个王小虎用户 两个订单 通过setOrderses加入 只使用cd save这一个对持久层操作 完成后查询 王小虎 ================================= 王小虎的买单 王小虎的买单 显示 CUSTOMER里面加入了王小虎 ORDERS里面也加入他的订单 删除操作 ListcsList=cd findByProperty( name 王小虎 ); for(Customercs:csList){ cd delete(cs); } 这个很简单了 通过其中findByProperty( name 王小虎 );对应SQL为deletefromtableCUSTOMERwherename= 王小虎 ;删除了王小虎 而ORDERS里面 王小虎对应的表单也同时被删除 小小总结 lishixinzhi/Article/program/Java/ky/201311/28543
hibernate 多对一,一对多,多对多, 在JAVA中怎么理解呢?
首先我要告诉你,数据库描述表之间的关系是通过外键描述的,hibernate中是通过属性描述的。
外键是什么意思?举个例子说,数据库中,你有个表是学生表,
我们简单点说有三列,一个是学生的id,一个是姓名,一个是班级的id
而在数据库中,你会建一个班级表,
其中有id和班级的名称,比如计算机三班,二班等等。
班级和学生,班级是一,学生是多。
而在hibernate中,为了简单起见,一般会在学生类中将班级属性设置成一个班级类,而在班级类中额外添加一个list或者set。这么做的好处简单来说,是为了方便。
怎么方便呢?
这么说吧,比如我们没这么设置,而是在学生类中只有一个班级的id,那么你查到一个学生,想看他班级的名称,是不是还要根据班级的id,去班级表查找对应的名字,这么一来,就会十分麻烦,所以在hibernate中,如果表中有外键,那么一般会将这个外键设置成那个表的实体类,这样一来,我们就不需要多那一步了。
至于你说为什么将属性设置到班级的对象,然后保存学生的信息,学生表中就有班级id这个字段的值了,这个问题,很简单,因为你不仅把属性保存到班级对象中了,你肯定还把这个班级对象作为属性设置给学生了,所以就有了。
换句话说,你等于还是间接的设置了班级id,这个字段,具体他们的对应关系,自然是在配置文件中显示的。
不知道说了这么多,你能理解不。
手酸了,,,,希望对你有帮助。。。

