您的位置:

java持久化,java持久化框架有哪些

本文目录一览:

java的持久化有什么用?

java持久化技术是为了将java对象与数据库表对应。

java中存储很多对象在内存是很浪费空间的,内存过于昂贵,与硬盘、磁带、光盘等外存相比,内存的价格要高2~3个数量级,而且维持成本也高,至少需要一直供电吧。所以即使对象不需要永久保存,也会因为内存的容量限制不能一直呆在内存中,需要持久化来缓存到外存。

持久化是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)。

JAVA的序列化和持久化的区别与联系

序列化可以将一个复杂的对象转化为一维的数据,而这为持久化提供了很大的方便,因为文件就是一维的,将一维的东西写入文件自然比较方便。

不过持久化是个很宽泛的概念,可以是写入文件,也可以是存入数据库,写入注册表等多种方式。其本意是延长对象或数据的生命周期,让其可以超越程序的生命周期,程序关闭了,甚至服务器关机了,下次运行程序时又可以让对象或数据恢复到原来的状态。

而序列化也不一定是用来持久化的,可以是用来传递使用,如从计算机A传递到计算机B;也可以用来进行深拷贝;总之序列化主要解决从复杂的数据结构转化为一维结构,或者从一维结构从新构建复杂的数据结构。

Java持久化对象时需要注意什么?

你问的这个问题范围有点大,简单写几条供你参考。

①数据库的选择,依据数据量大小、熟悉程度、成本等因素选定数据库,一旦选择并开发了,很难变更了。

②送择合适的持久层开发框架,如ibatis、spring等,这些框架各有优缺点。

③具体实现时,则要注意注入漏洞,操作返回值让用户知道等。

用java代码如何设置activemq消息持久化到数据库中?

ActiveMQ持久化消息的二种方式;

1、持久化为文件

这个装ActiveMQ时默认就是这种,只要设置消息为持久化就可以了。涉及到的配置和代码有:

persistenceAdapter

kahaDB directory="${activemq.base}/data/kahadb"/

/persistenceAdapter

producer.Send(request, MsgDeliveryMode.Persistent, level, TimeSpan.MinValue);

2、持久化为MySql

首先需要把MySql的驱动放到ActiveMQ的Lib目录下,我用的文件名字是:mysql-connector-java-5.0.4-bin.jar

接下来修改配置文件

persistenceAdapter

jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#derby-ds"/

/persistenceAdapter

在配置文件中的broker节点外增加

bean id="derby-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"

property name="driverClassName" value="com.mysql.jdbc.Driver"/

property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/

property name="username" value="activemq"/

property name="password" value="activemq"/

property name="maxActive" value="200"/

property name="poolPreparedStatements" value="true"/

/bean

从配置中可以看出数据库的名称是activemq,需要手动在MySql中增加这个库。

然后重新启动消息队列,会发现多了3张表

1:activemq_acks

2:activemq_lock

3:activemq_msgs

java消息队列是怎么实现数据持久化的

java中的消息队列消息队列是线程间通讯的手段:import java.util.*public class MsgQueue{ private Vector queue = null; public MsgQueue(){ queue = new Vector(); } public synchronized void send(Object o) { queue.addElement(o); } public synchronized Object recv(){ if(queue.size()==0) return null; Object o = queue.firstElement(); queue.removeElementAt(0);//or queue[0] = null can also work return o;}}因为java中是locked by object的所以添加synchronized 就可以用于线程同步锁定对象可以作为多线程处理多任务的存放task的队列。他的client包括封装好的task类以及thread类Java的多线程-线程间的通信2009-08-25 21:581. 线程的几种状态线程有四种状态,任何一个线程肯定处于这四种状态中的一种:1) 产生(New):线程对象已经产生,但尚未被启动,所以无法执行。如通过new产生了一个线程对象后没对它调用start()函数之前。2) 可执行(Runnable):每个支持多线程的系统都有一个排程器,排程器会从线程池中选择一个线程并启动它。当一个线程处于可执行状态时,表示它可能正处于线程池中等待排排程器启动它;也可能它已正在执行。如执行了一个线程对象的start()方法后,线程就处于可执行状态,但显而易见的是此时线程不一定正在执行中。3) 死亡(Dead):当一个线程正常结束,它便处于死亡状态。如一个线程的run()函数执行完毕后线程就进入死亡状态。4) 停滞(Blocked):当一个线程处于停滞状态时,系统排程器就会忽略它,不对它进行排程。当处于停滞状态的线程重新回到可执行状态时,它有可能重新执行。如通过对一个线程调用wait()函数后,线程就进入停滞状态,只有当两次对该线程调用notify或notifyAll后它才能两次回到可执行状态。2. class Thread下的常用函数函数2.1 suspend()、resume()1) 通过suspend()函数,可使线程进入停滞状态。通过suspend()使线程进入停滞状态后,除非收到resume()消息,否则该线程不会变回可执行状态。2) 当调用suspend()函数后,线程不会释放它的“锁标志”。例11:class TestThreadMethod extends Thread{public static int shareVar = 0;public TestThreadMethod(String name){super(name);}public synchronized void run(){if(shareVar==0){for(int i=0; i5; i ){shareVar ;if(shareVar==5){this.suspend(); //(1)}}}else{System.out.print(Thread.currentThread()

什么是对象持久化,什么对象序列化,如何实现java的对象序列化?

持久化的对象,是已经存储到数据库或保存到本地硬盘中的对象,我们称之为持久化对象。

为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。

简单说就是对象序列化是将对象状态转换为可保持或传输的格式的过程。

什么情况下需要序列化 :

a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;

b)当你想用套接字在网络上传送对象的时候;

c)当你想通过RMI传输对象的时候;

对象要实现序列化,是非常简单的,只需要实现Serializable接口就可以了。

public class Test implements Serializable

对序列化的更多了解,可以上: