* Hibernate对JPA的实现:
* 1、配置Domain
* @Entity
@Table(name = "t_accountinfo")
public class AccountInfo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(name="balance")
private double balance;
2、配置持久化文件新建文件位置:/src/META-INF/persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
version="2.0">
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>cn.dh.spring.data.jpa.domain.AccountInfo</class>
<properties>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/springdatajpa" />
<property name="hibernate.connection.username" value="springdatajpa" />
<property name="hibernate.connection.password" value="springdatajpa" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.use_sql_comments" value="false" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
3、实现DAO
public class UserDAOImpl implements UserDAO {
private EntityManagerFactory emf;
public UserDAOImpl(){
emf = Persistence.createEntityManagerFactory("default");
}
@Override
public AccountInfo save(AccountInfo accountInfo) {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(accountInfo);
em.getTransaction().commit();
emf.close();
return accountInfo;
}
4、对JPA进行测试:
UserDAO userDAO=new UserDAOJAPImpl();
AccountInfo ai=new AccountInfo();
ai.setBalance(100.25);
userDAO.save(ai);
* <p>User: 裴东辉
* <p>Date: 2014-7-29 下午9:21:00
* <p>Version: 1.0
*/
项目最小jar包依赖:
db-mysql-connector-java-5.1.8-bin.jar
hibernate-commons-annotations-4.0.4.Final.jar
hibernate-core-4.3.0.Final.jar
hibernate-entitymanager-4.3.0.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
hibernate-zdp-antlr-2.7.6.jar
hibernate-zdp-dom4j-1.6.1.jar
hibernate-zdp-jandex-1.1.0.Final.jar
hibernate-zdp-javassist-3.18.1-GA.jar
hibernate-zdp-jboss-logging-3.1.3.GA.jar
hibernate-zdp-jboss-transaction-api_1.2_spec-1.0.0.Final.jar
jar包获取,在Spring官网,springproject,spring-data,spring-data-jpa里面找到spring-data-jpa-examples的链接:
https://github.com/spring-projects/spring-data-jpa-examples
本文链接:Hibernate对JPA的实现,转载请注明。
替换变量可看作是占位符
一、 单个&符号替换
SQL语句中最基本、最普遍元素替换形式是单个&符号替换。&符号是用来在语句中指定替换变量的符号。当执行语句时,Oracle服务器处理语句,发现替换变量,并尝试用下面两种方法之一来解析变量的值。首先,它检查在用户会话中是否定义了该变量(DEFINE命令)。倘若没有,用户进程会提示输入一个值,这个值会替换变量。
如下所示:
Enter value for number: 7934
old 1: select ename,sal from emp where empno=&number
new 1: select ename,sal from emp where empno=7934
ENAME SAL
---------- ----------
MILLER 1300
二、&&符号替换
倘若在多次查询中用到同一替换变量,且该替换变量的值不变,可用&&替换。当oracle服务器遇到&&替换变量时,用进程会提示输入一个值,该值即为该变量的会话值,当后续查询引用该替换变量时,会直接替换为该变量会话值,用户进程不再提示输入值。
如下所示:
Enter value for number: 7934 -->> 输入值
old 1: select ename,sal from emp where empno=&&number
new 1: select ename,sal from emp where empno=7934
ENAME SAL
---------- ----------
MILLER 1300
SQL> select ename,sal from emp where empno=&number; -->> 直接引用,不再提示输入新值
old 1: select ename,sal from emp where empno=&number
new 1: select ename,sal from emp where empno=7934
ENAME SAL
---------- ----------
MILLER 1300
SQL> select ename,sal from emp where empno=&&number; -->> 第二次出现,同样不再提示输入值,number在整个会话期间始终有效
old 1: select ename,sal from emp where empno=&&number
new 1: select ename,sal from emp where empno=7934
ENAME SAL
---------- ----------
MILLER 1300
三、替换列名
上述替代变量替代的基本上是where子句中的元素,但实际上SQL语句中的任何元素都是可以替换的对象。如下所示,第三列被替换:
Enter value for col: sal -->> 在这里,我们既可以选sal,也可以选择hiredate
old 1: select empno,ename,&&col from emp order by &col
new 1: select empno,ename,sal from emp order by sal
EMPNO ENAME SAL
----- ---------- ----------
7369 SMITH 800
7900 JAMES 950
7876 ADAMS 1100
7521 WARD 1250
...
四、 替换表达式和文本
在运行时几乎可以替换SQL语句的任何元素。条件是Oracle要求至少第一个单词是静态的。在SELECT语句中,至少需要SELECT关键字不变,如下所示:
Enter value for rest_of_statements: ename from emp where empno=7839
old 1:
没有评论:
发表评论