首页 热点资讯 义务教育 高等教育 出国留学 考研考公

如何学习各种框架,如何学习javaweb

发布网友 发布时间:2022-04-23 04:07

我来回答

3个回答

懂视网 时间:2022-04-14 17:34

1.持久化对象POJO编写规则: 1) 有空参public构造器; 2) 提供标识属性,映射数据表主键; 3) 属性提供setter和getter方法; 4) 属性使用基本数据类型的包装类型。基本类型在数据库中不能区分null和0; 5) 不使用final修饰。如果使用final则无法生成代

1.持久化对象POJO编写规则:

1) 有空参public构造器;

2) 提供标识属性,映射数据表主键;

3) 属性提供setter和getter方法;

4) 属性使用基本数据类型的包装类型。基本类型在数据库中不能区分null和0;

5) 不使用final修饰。如果使用final则无法生成代理对象;当使用了final,load查询将如同get查询。

2.POJO的OID:

OID是持久化类与数据表主键对应的属性,用来唯一区分持久化对象。

自然主键:采用数据库中有意义的列的值作为主键(有意义)

代理主键:采用自动生成的流水号、UUID作为主键(无意义,推荐)

3.数据类型:

基本类型无法区分null和0,开发中POJO属性都使用包装类型。

4.持久化类配置POJO.hbm.xml:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 xml version="1.0" encoding="UTF-8"?> DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.cvu.domain"> jdbc:mysql:///数据库 " --> <class name="User" table="table_user" catalog="db_hibernate"> <id name="id" column="id" type="int"> <generator class="native">generator> id>    <property name="name" column="name" type="string">property>    <property name="age" column="age" type="int" >property>    <property name="city" column="city" sql-type="string">property> class> hibernate-mapping>

1)主键生成策略increment:顶层递增:

由hibernate自动完成,原理:先查询最大值,再插入此值加一。OID必须为long、int或short类型。

优点:跨数据库。

缺点:多线程并发访问问题。

2)主键生成策略identity:底层递增:

由数据库自动完成,要求数据库必须支持自增主键。mysql支持,oracle不支持。OID必须为long、int或short类型。

优点:无并发访问问题。

3)主键生成策略sequence:序列:

由数据库自动完成递增,要求数据库必须支持序列。mysql不支持,oracle支持。OID必须为long、int或short类型。

Oracle:

1创建序列:create sequence myseq;

2调用序列:insert into customer values (myseq.nextval); #序列加一

4)主键生成策略native:本地:

采用数据库支持的自增策略。 mysql:identity,oracle:sequence。OID必须为long、int或short类型。

优点:跨数据库平台。

5)主键生成策略uuid:标识符:

由数据库自动创建。 uuid是32位唯一字符串,表单主键使用varchar类型,POJO对应属性是String类型。

6)主键生成策略assigned:手动指定:

在调用hibernate时手动指定主键的值,用于自然主键(有意义的)。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 public void testInsertAssigned() { Session session = UtilGetSesstion.openSession(); Transaction transaction = session.beginTransaction(); User user = new User(); user.setId(20130124); //手动设置主键 user.setName("EminemXXX"); user.setAge(42); user.setCity("NewYorkXXX"); session.save(user); transaction.commit(); session.close(); }

7)主键生成策略:复合主键:

(1)编写POJO类 Person.java:

1 2 3 4 5 6 7 8 9 10 11 package cn.cvu.domain; import java.io.Serializable; //务必事先序列化接口 public class Person implements Serializable { private String firstName; //对应表单的复合主键 private String secondName; //对应表单的复合主键 private String address; //get/set //toString }

(2)配置POJO.hbm.xml:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 xml version="1.0" encoding="UTF-8"?> DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.cvu.domain"> <class name="Person" table="table_person" catalog="db_hibernate"> <composite-id> <key-property name="firstName" column="nameFirst">key-property> <key-property name="secondName" column="nameFirst">key-property> composite-id> <property name="address" column="addr" type="string">property> class> hibernate-mapping>

(3)配置hibernate.cfg.xml,加载Person.hbm.xml文件:

(4)操作类的方法:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public void testInsert() { Configuration configuration = new Configuration().configure(); SessionFactory sessionFactory = configuration.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); Person person = new Person(); person.setFirstName("C"); person.setSecondName("Vigiles"); person.setAddress("Beijng"); session.save(person); transaction.commit(); session.close(); sessionFactory.close(); }

(5)结果:

INFO: HHH000262: Table not found: tb_person
2013-11-5 10:07:12 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: HHH000388: Unsuccessful: create table db_hibernate.tb_person (namef varchar(255) not null, names varchar(255) not null, age integer, city varchar(255), primary key (namef, names)) type=InnoDB
2013-11-5 10:07:12 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=InnoDB' at line 7
2013-11-5 10:07:12 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete

1 2 3 <property name="hibernate.dialect">   org.hibernate.dialect.MySQL5InnoDBDialectproperty>

-end

热心网友 时间:2022-04-14 14:42

面对及其复杂的web项目,为了提高项目的可维护性与可扩展性,简化开发人员的工作,越来越多的框架被设计实现出来,并且得到广泛的应用。
框架包括全栈框架如Spring,MVC框架如structs与SpringMVC,ORM框架如Hibernate与Mybatis。它们在web项目中有各自的分工,通过Spring将他们整合起来。
所谓三大框架,即struts、spring及hibernate。要想学习好三大框架,快速掌握,最好的方法无疑是理论与实践结合,由简入繁,由单一到全部,逐一攻克,具体学习步骤如下:
1、先学习struts,struts是世界上第一个经典的mvc框架,其作用就是将业务逻辑与视图分离开来,使得项目层次分明,清晰,更具有结构性。学习一个框架,首先要知道这个框架的作用,有哪些特征,然后就是了解其实现原理,最后就是结合实际项目例子来进一步加深对这个框架的理解。
2、struts掌握了后,接着学习spring,spring就是一个大的工厂,其轻量理强大,它改变了传统的编程模式,将实例化bean交给了容器管理,使得项目中类的耦合度大为降低。spring的特性很多,较为有名就是IOC(控制反转)与AOP(面向世面编程)。要想学习好spring,就要先掌握相应的理论知识点,然后就是动手敲代码,将它的每一个特性都实现一遍,功力到了,自然就掌握了。
3、掌握了以上两大框架之后,可以继续深入学习hibernate框架了。hibernate是一个orm-maping框架,即对象关系映射,将数据库表反转映射成实体对象,使得用户在操作底层数据库时,不用再写那些繁琐的SQL语句,而是通过直接操作对象将数据持久化到数据库。学习好hibernate,首先要掌握其原理,映射配置,然后就是对其每一个特性进行编码验证,如一对一,一对多,多对多关系映射等。可以不结合项目,只要能连上数据库进行相应操作即可。
4、三大框架都初步掌握了后,就可以进行整合学习了。三大框架在整合分工也很明确,也是一个经典的MVC框架,其中struts充于其中的V(即视图层),spring充当C(即业务控制层),hibernate充当M(持久层)。整合学习三大框架的难点在于其中的配置,依赖及管理,这非一两天能完成的事情,得要多查阅相关书籍交资料,动手实践,用心体验。

最后,要想学习好框架,除了掌握其原理、特性外,还要多动手编码,多思考,熟能生巧。一句话,纸上得来终觉浅,绝知此事要躬行。

热心网友 时间:2022-04-14 16:00

买一本相关的教材,自学即可。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com