자바 의 버클 리 DB(1)

최근 SE 에 관 한 지식 을 배우 고 있 기 때문에 처음부터 큰 문제 가 발생 했 습 니 다.데이터 저장 문제?
Crawler 가 캡 처 한 웹 페이지 가 많 을 수록 자바 테이프 의 Array List 나 HashMap 을 사용 하 는 것 도 저장 되 지 않 았 고 속도 적 으로 도 우리 의 수 요 를 만족 시 키 지 못 했 기 때문에 Berkeley DB 와 같은 메모리 기반 소형 데이터 베 이 스 를 사용 하 는 것 을 추천 합 니 다.이것 은 내장 형 데이터 베이스 로 응용 프로그램 에 포 함 된 데이터 베 이 스 를 말 합 니 다.
Oracle 홈 페이지 에 접속 하면 이 라 이브 러 리 에 다운로드 할 수 있 습 니 다.
메모:lib 에 가입 할 때 는 je 그 jar 만 가입 하면 됩 니 다.어차피 제 가 다른 것 도 추가 할 때 잘못 보고 할 수 있 습 니 다.
java.lang.NullPointerException at com.sleepycat.je.dbi.MemoryBudget.
이런 영문 도 모 르 고 기묘 한 것 을 나 로 하여 금 한참 동안 찾 아 오 게 하여 깊 은 밤 에...........................................나중에 창고 하나만 추가 하면 되 는데...
모두 가 인터넷 에 접속 하여 그의 중국어 수첩 을 찾 아 볼 수 있 는 것 을 추천 합 니 다.누군가가 번역 을 해서 곧 손 에 넣 을 수 있 습 니 다.
우선 환경 설정 이 필요 합 니 다.EnvironConfig.
이 환경 설정 은 우리 의 환경 환경 환경 을 생 성 할 수 있 습 니 다.
그리고 이 환경 을 이용 하여 데이터베이스 Database 를 만 듭 니 다.
물론 데이터베이스 설정 DatabaseConfig
알 아내 면 간단 합 니 다.다른 것 은 설정 문제 입 니 다.
앞으로 프로젝트 를 사용 하기 위해 서,나 는 간단하게 이 라 이브 러 리 를 hashMap 과 유사 한 사용 방법 으로 봉 했다.
아직 커서 를 보지 못 했 습 니 다.여러분 스스로 이 함 수 를 풍부하게 하면 됩 니 다.너무 늦 었 습 니 다.졸음
import java.io.File;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;

import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.je.LockMode;
import com.sleepycat.je.OperationStatus;


public class Main {

	/**
	 * @param args
	 */
	static Environment env = null;
	
	public static void main(String[] args) {
		BDBUtil<Integer, Student> bDB = new BDBUtil<Integer, Student>("testDB");
		Student s1 = new Student(1,"ylf");
		Student s2 = new Student(2,"dsb");
		Student s3 = new Student(3,"dbc");
		
		bDB.put(1, s1);
		bDB.put(2, s2);
		bDB.put(3, s3);
		
		Student s = new Student();
		s.fromString(bDB.get(3));
		System.out.println("my name is "+s.getName()+" no is "+s.getNo());
		
		System.out.println(bDB.size());
		bDB.close();
	}

}

/**
 *    BDB  
 *                ,    3   
 *   HashMap     
 *   :
 *    K   V         Serializable
 *       toString
 *         close()
 * @author ylf
 *
 */
class BDBUtil<K, V>{
	private Environment env = null;
	private EnvironmentConfig envCfig = null;
	private Database db = null;
	private DatabaseConfig dbCfig = null;
	
	private File file = null;
	
	public BDBUtil(String dbName) {
		envCfig = new EnvironmentConfig();
		envCfig.setAllowCreate(true);
		file = new File("./test/");
		env = new Environment(file, envCfig);
		dbCfig = new DatabaseConfig();
		dbCfig.setAllowCreate(true);
		db = env.openDatabase(null, dbName, dbCfig);
	}
	
	public boolean put(K keyStr, V valueStr){
		DatabaseEntry key;
		try {
			key = new DatabaseEntry(keyStr.toString().getBytes("gb2312"));
			DatabaseEntry data = new DatabaseEntry(valueStr.toString().getBytes("gb2312"));
			db.put(null, key, data);
			return true;
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
			return false;
		}
	}
	
	public String get(K keyStr){
		DatabaseEntry key;
		String value = "";
		try {
			key = new DatabaseEntry(keyStr.toString().getBytes("gb2312"));
			DatabaseEntry data = new DatabaseEntry();
			if(db.get(null,key,data,LockMode.DEFAULT) == OperationStatus.SUCCESS)
				value = new String(data.getData(),"gb2312");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return value;
		
	}
	
	public boolean del(K keyStr){
		DatabaseEntry key;
		try {
			key = new DatabaseEntry(keyStr.toString().getBytes("gb2312"));
			if(OperationStatus.SUCCESS == db.delete(null, key))
				return true;
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return false;
	}
	
	public long size(){
		return db.count();
	}
	
	public void close(){
		db.close();
		env.cleanLog();
		env.close();
	}
}

/**
 *       
 *   toString()
 * @author ylf
 *
 */
class Student implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 7333239714054069867L;
	private String name;
	private int no;
	
	public Student() {
	}
	public Student(int no, String name){
		this.no = no;
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getNo() {
		return no;
	}
	public void setNo(int no) {
		this.no = no;
	}
	@Override
	public String toString() {
		return "Student"+no+":"+name;
	}
	
	public void fromString(String str){
		int i = str.indexOf(':');
		String noStr = str.substring(7,i);
		this.no = Integer.parseInt(noStr);
		this.name = str.substring(i+1);
	}
	
}

좋은 웹페이지 즐겨찾기