以前和数据库打交道的标准INTERFACE是JDBC,放SQL语句,执行,就可以有结果。随着近年ORM的兴起,以对象的方式存取数据库大行其道。于是产生了JPA。
也是一套INTERFACE,以ORM的方式提供,由厂商实现,如ECLIPSE LINK,HIBERNATE,OPENEJB等。
ENTITYMANAGERFACTORY:根据配置文件制造ENTITYMANAGER
ENTITYMANAGER:以ORM的方式提供操作数据库的功能
TRANSACTION:事务保证
PERSISTENCE.XML:链接数据库信息,事务类型,重定义JPA的实现厂商等的配置信息
在容器环境下使用:
如果事务是RESOURCE_LOCAL的方式,则合用端需干所有的事情,如构造ENTITYMANAGER,打开事务,关闭事务等。类似于BMT。
以下是在服务器环境中合用RESOURCE_LOCAL型的JPA
事先要在容器中添加数据源。
persistence.xml
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<!-- Tutorial "unit" -->
<persistence-unit name="Tutorial" transaction-type="RESOURCE_LOCAL">
<non-jta-data-source>myNonJtaDataSource</non-jta-data-source>
<class>org.superbiz.jpa.Account</class>
</persistence-unit>
</persistence>
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.PersistenceUnit;
public class MyEjbOrServlet

{
@PersistenceUnit(unitName="Tutorial")
private EntityManagerFactory factory;
// Proper exception handling left out for simplicity
public void ejbMethodOrServletServiceMethod()
throws Exception {
EntityManager entityManager = factory.createEntityManager();
EntityTransaction entityTransaction = entityManager.getTransaction();
entityTransaction.begin();
Account account = entityManager.find(Account.
class, 12345);
account.setBalance(5000);
entityTransaction.commit();
}

}
以下是JTA方式的JPA,容器+EJB+JPA+JTA,容器会在EJB的方法调用前打开一个事务,在方法退出后,提交事务,并且如果是多个数据源的,即有多个ENTITYMANAGER的
可以保证一致性,即全局事务。相当于之前的先调用USERTRANSACTION,BEGIN,COMMIT。
事先要在容器中添加数据源。
persistence.xml
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<!-- Tutorial "unit" -->
<persistence-unit name="Tutorial" transaction-type="JTA">
<jta-data-source>myJtaDataSource</jta-data-source>
<non-jta-data-source>myNonJtaDataSource</non-jta-data-source>
<class>org.superbiz.jpa.Account</class>
</persistence-unit>
</persistence>
EJB
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless
public class MyEjb implements MyEjbInterface {
@PersistenceContext(unitName = "Tutorial")
private EntityManager entityManager;
// Proper exception handling left out for simplicity
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void ejbMethod() throws Exception {
Account account = entityManager.find(Account.class, 12345);
account.setBalance(5000);
}
}
如果是J2SE环境下使用JPA,则又是不一样的。
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="SimplePU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.someone.jmail.valueobject.CallActivity</class>
<class>com.someone.jmail.valueobject.Email</class>
<properties>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/test" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.connection.password" value="12345" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="false"/>
<property name="hibernate.hbm2ddl.auto" value="none"/>
</properties>
</persistence-unit>
</persistence>
Dao:
public class UserDaoImpl implements UserDao {
public AccountInfo save(AccountInfo accountInfo) {
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("SimplePU");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(accountInfo);
em.getTransaction().commit();
emf.close();
return accountInfo;
}
}
在 Ubuntu 安裝 java Jdk 很容易
Install-Oracle-Java-7-in-Ubuntu-via-PPA-Repository
安裝 java 很容易 ! (支援 Ubuntu 12.04, 11.10, 11.04 and 10.04)
說在前頭 :
0. 安裝 oracle java jdk (目前是 7u5 版)
0-1. 包含 jdk jre 及 瀏覽器插件 (不能只安裝 jre 或 瀏覽器插件)
0-2. 自動 辨識 64 bits 或 32 bits
0-2. 安裝後 會自動從 ppa:webupd8team/java 套件庫 更新 已安裝套件
0-3. 以後有新版本 這個方法 自動會直接安裝新版本(例如如果有 7u6 版)
1. 安裝指令
2. 看看是否安裝成功
java -version
目前最新版本
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)
2-1. 如果上面的指令 得到的版本 不是剛剛安裝的版本
sudo update-java-alternatives -s java-7-oracle
再試一次
java -version
3. 移除 Oracle Java 7
sudo apt-get remove oracle-java7-installer
ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可少,这里我介绍一个我在工作中使用了3年左右的ETL工具Kettle,本着好东西不独享的想法,跟大家分享碰撞交流一下!在使用中我感觉这个工具真的很强大,支持图形化的GUI设计界面,然后可以以工作流的形式流转,在做一些简单或复杂的数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有着比较稳定的表现,其中最主要的我们通过熟练的应用它,减少了非常多的研发工作量,提高了我们的工作效率,不过对于我这个.net研发者来说唯一的遗憾就是这个工具是Java编写的。
http://www.cnblogs.com/limengqiang/archive/2013/01/16/KettleApply1.html
需求:要抓同一网络上某一设备,如平板的网络传输包以进行分析,访问哪些网址等。
软件:WIRESHARK,金山的WIFI共享
环境:由于WIRESHARK只能抓本电脑(安装此软件上的PC)的包,因此要在装一个无线网卡,再安装一个金山的WIFI共享软件,将此无线网卡作为热点共享出去。另一设备通过WIFI连上此热点。这样此设备上的所有都经过此无线网卡,就可以被WIRESHARK抓到。
1.将无线网卡连上路由,产生IP1
2.启动CONNECTIFY ME,共享来源选IP1
3.客户端通过WIFI连CONNECTIFY ME
4.则客户端向INTERNET发送请求时,请求是通过IP1发送的,收到的回应是通过CONNECTIFY ME返回的
使用:打开WIRESHARK,选择抓哪个网卡,再配置过滤条件,点击开始即可。现总结了下这个过滤条件:
ip.src == 192.168.1.113 && http.request.method=="GET" && http.user_agent contains "014440000001041"
都是以协议开头,属性名称,表达式符号,属性值,连接符号,其他表达式的这种格式。
wireshark过滤语法总结
http://blog.csdn.net/cumirror/article/details/7054496
1、删除 mysql
1 sudo apt-get autoremove --purge mysql-server-5.0
2 sudo apt-get remove mysql-server
3 sudo apt-get autoremove mysql-server
4 sudo apt-get remove mysql-common (非常重要)
上面的其实有一些是多余的,建议还是按照顺序执行一遍
清理残留数据
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
2、安装 mysql
1 sudo apt-get install mysql-server
2 sudo apt-get install mysql-client
3 sudo apt-get install php5-mysql(安装php5-mysql 是将php和mysql连接起来 )
一旦安装完成,MySQL 服务器应该自动启动。您可以在终端提示符后运行以下命令来检查 MySQL 服务器是否正在运行:
1 sudo netstat -tap | grep mysql
当您运行该命令时,您可以看到类似下面的行:
tcp 0 0 localhost.localdomain:mysql *:* LISTEN -
如果服务器不能正常运行,您可以通过下列命令启动它:
1 sudo /etc/init.d/mysql restart
3、进入mysql
$mysql -uroot -p 管理员密码
配置 MySQL 的管理员密码:
1 sudo mysqladmin -u root password newpassword
4、恢复数据库
mysql -p < html5canvas-20130930-0816.sql
http://www.yesky.com/187/1754687.shtml
TOMCAT数据源
http://136589219.iteye.com/blog/1572214