javabean学习笔记 参考https://www.cnblogs.com/Qian123/p/5277425.html
JavaBean简介 javabeans就是符合某种特定规范的Java类,功能区分很明确,并且有如下设计原则
公有类,无参的共有构造方法,属性私有,有getter和setter。
Jsp联动 JavaBean和JSP有关的动作标签有
1 2 3 <jsp:useBean></jsp:useBean> <jsp:setProperty></jsp:setProperty> <jsp:getProperty></jsp:getProperty>
如何使用 普通的使用 可以当做一个普通的java类在jsp中插入java代码来使用。
具体分析就是:
1、创建一个web project项目。 2、在src文件下,创建一个包,在包中创建一个类,满足设计原则即可 3、在index.jsp页面中通过import导入之前创建的类(import=”包名.类名”) 4、通过使用new创建Javabean实例(创建对象) 5、使用set方法赋值 6、使用get方法取值
使用jsp动作标签 useBean 1 2 3 <body> <jsp:useBean id="myUsers" class ="com.Users" scope="page" /> </body>
其中java类名是java类的全名要有package
setProperty Hibernate ORM 对象关系映射
当我们工作在一个面向对象的系统中时,存在一个对象模型和关系数据库不匹配的时候,在java中他有一个对象关联图。
hibernate将java类映射到数据表中,
Session Session用于获取与数据库的物理连接,由于Session对象是轻量级的,并且每次与数据库进行交互都要实例化,持久太对象被保存,并通过Session对象检索找回。
因为Session对象不是线程安全的,应该根据需求被创建或者销毁。他的主要功能是映射实体类的实例提供创建,读取和删除操作。
典型的事务语法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 Session session = factory.openSession(); Transaction tx = null ; try { tx = session.beginTransaction(); ... tx.commit(); } catch (Exception e) { if (tx!=null ) tx.rollback(); e.printStackTrace(); }finally { session.close(); }
个人认为比较重要的方法
1 2 3 4 5 6 7 8 9 10 11 Transaction beginTransaction () Connection close () Query createQuery (String queryString) SessionFactory getSessionFactory ()
持久化类 在 Hibernate 中,其对象或实例将会被存储在数据库表单中的 Java 类被称为持久化类。若该类遵循一些简单的规则或者被大家所熟知的 Plain Old Java Object (POJO) 编程模型,Hibernate 将会处于其最佳运行状态。以下所列就是持久化类的主要规则,然而,在这些规则中,没有一条是硬性要求。
所有将被持久化的 Java 类都需要一个默认的构造函数。
为了使对象能够在 Hibernate 和数据库中容易识别,所有类都需要包含一个 ID。此属性映射到数据库表的主键列。
所有将被持久化的属性都应该声明为 private,并具有由 JavaBean 风格定义的 getXXX 和 setXXX 方法。
Hibernate 的一个重要特征为代理,它取决于该持久化类是处于非 final 的,还是处于一个所有方法都声明为 public 的接口。
所有的类是不可扩展或按 EJB 要求实现的一些特殊的类和接口。
POJO 的名称用于强调一个给定的对象是普通的 Java 对象,而不是特殊的对象,尤其不是一个 Enterprise JavaBean。
他并不是一个javabean
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 public class Employee { private int id; private String firstName; private String lastName; private int salary; public Employee () {} public Employee (String fname, String lname, int salary) { this .firstName = fname; this .lastName = lname; this .salary = salary; } public int getId () { return id; } public void setId ( int id ) { this .id = id; } public String getFirstName () { return firstName; } public void setFirstName ( String first_name ) { this .firstName = first_name; } public String getLastName () { return lastName; } public void setLastName ( String last_name ) { this .lastName = last_name; } public int getSalary () { return salary; } public void setSalary ( int salary ) { this .salary = salary; } }
关键点 对于s: jstl标签中 查询不能用createSQLquery得用createquery 获得的查询才是正确的查询。属于可以直接放到上面去的。
个人理解
hibernate把数据读入 之后将数据传输给javabean,之后依靠javabean将数据显示在jsp页面上,
上课笔记 Hibernate就是实现ORM的一个框架
1 2 3 4 5 6 7 <id name ="id" type ="long" > <column name ="id" /> <generator class ="increment" /> </id > <property name ="xxx" type ="string" > <column name ="xxxx" length ="30" /> </property >
xxx 是成员中的成员变量 xxxx 是列在数据库中的名字。
id 是主键的意思。
看xml文件要采用剥皮的方式,一层一层看进去。
链接一种数据库的时候只需要一个SessionFactory。但是如果你要进行数据迁移的时候,就需要两个会话工厂。
如果对象是和数据库一直是一样的,那就是持久态。Persistent
如果对象是还没有提交到数据库中,就是临时态,Transient
如果是对象不和数据库一致 就是游离态 Detached
把对象删除了 Removed
可以使用save()函数将Transient状态转化为Persistent
当session.close()以后你再设置对象的状态就是Detached状态了。
通过Criteria查询 QBC Query By Criteria 1 2 3 Criteria criteria = session.createCriteria(Student.class).add(Restrictions.like("id" ,new Integer(1 )))
新建一个约束(查询条件) id=1
(Student.class)强制类型转换 把他变成了Student。
HQL Hibernate Query Language 可以通过HQL来查询。
HQL使用了类来查询
1 String hql = "from Student" ;
因为Hibernate框架的支持所以只需发要这样写就可以直接查询了。
字段操作 基于Hibernate的操作有几种操作
解释函数的意义。
1 2 Query query = session.createQuery(hql);
query 是流数据,是二进制数据,所以要强制类型转化。
带参数的HQL语句
1 2 3 4 5 6 String hql = "select * from Employee emp where emp.id=:id and emp.name=:name" ; Query query = session.createQuery(hql).addEntity(Employee.class); query.setParameter("id" ,1 ); query.setParameter("name" ,"fff" ); this .dataObject = (List<Employee>) query.list();