스프링 데이터베이스 정리
commons-collections-3.2.1.jar데이터베이스(오라클)
commons-dbcp-1.4.jar
commons-logging-1.1.1.jar
commons-pool-1.5.6.jar
ojdbc14.jar
org.springframework.aop-3.0.6.RELEASE.jar
org.springframework.asm-3.0.6.RELEASE.jar
org.springframework.beans-3.0.6.RELEASE.jar
org.springframework.context.support-3.0.6.RELEASE.jar
org.springframework.context-3.0.6.RELEASE.jar
org.springframework.core-3.0.6.RELEASE.jar
org.springframework.expression-3.0.6.RELEASE.jar
org.springframework.jdbc-3.0.6.RELEASE.jar
org.springframework.transaction-3.0.6.RELEASE.jar
테이블GuestMessageRowMapper.java
CREATE TABLE "GUESTBOOK_MESSAGE" ( "MESSAGE_ID" NUMBER(5,0), "GUEST_NAME" VARCHAR2(20) DEFAULT null, "MESSAGE" VARCHAR2(4000), "REGISTRY_DATE" DATE DEFAULT null, CONSTRAINT "GUESTBOOK_MESSAGE_PK" PRIMARY KEY ("MESSAGE_ID") ENABLE )/
시퀀스
CREATE SEQUENCE "GUEST_SEQ" MINVALUE 1 MAXVALUE 99999 INCREMENT BY 1 START WITH 127 NOCACHE NOORDER NOCYCLE
/
package com.lrr.spring.dao;JdbcTemplateGuestMessageDao.javaimport java.sql.ResultSet;
import java.sql.SQLException;import org.springframework.jdbc.core.RowMapper;
import com.lrr.spring.model.GuestMessage;
public class GuestMessageRowMapper implements RowMapper<GuestMessage>{
@Override
public GuestMessage mapRow(ResultSet rs, int rowNum) throws SQLException {
GuestMessage message = new GuestMessage();
message.setId(rs.getInt("MESSAGE_ID"));
message.setGuestName(rs.getString("GUEST_NAME"));
message.setMessage(rs.getString("MESSAGE"));
message.setRegistryDate(rs.getDate("REGISTRY_DATE"));
return message;}
}
package com.lrr.spring.dao;GuestMessage.javaimport java.sql.Types;
import java.util.List;import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import com.lrr.spring.model.GuestMessage;
public class JdbcTemplateGuestMessageDao implements GuestMessageDao {
private JdbcTemplate jdbcTemplate;
public JdbcTemplateGuestMessageDao(DataSource dataSource){
jdbcTemplate = new JdbcTemplate(dataSource);
}
@Override
public int count() {
return jdbcTemplate.queryForInt("select count(*) from GUESTBOOK_MESSAGE ");
}
@Override
public List<GuestMessage> select(int begin, int end) {
return jdbcTemplate.query("select * from (select ROWNUM rnum, MESSAGE_ID, GUEST_NAME, MESSAGE, REGISTRY_DATE from (select * from GUESTBOOK_MESSAGE order by MESSAGE_ID desc)) where rnum>=? and rnum<=? ",new Object[]{begin, end},new GuestMessageRowMapper());
}
@Override
public int insert(GuestMessage message) {
int insertedCount = jdbcTemplate.update("insert into GUESTBOOK_MESSAGE(MESSAGE_ID,GUEST_NAME,MESSAGE,REGISTRY_DATE) values(guest_seq.nextval,?,?,?) ",message.getGuestName(),message.getMessage(), message.getRegistryDate());
return insertedCount;
}@Override
public int delete(int id) {
return jdbcTemplate.update("delete from GUESTBOOK_MESSAGE where MESSAGE_ID = ? ",id);
}@Override
public int update(GuestMessage message) {
return jdbcTemplate.update("update GUESTBOOK_MESSAGE set MESSAGE = ? where GUEST_NAME = ? ",new Object[]{message.getMessage(), message.getGuestName()}, new int[]{Types.VARCHAR,Types.VARCHAR});
}}
package com.lrr.spring.model;GuestMessageList.javaimport java.util.Date;
public class GuestMessage {
private Integer id;
private String guestName;
private String message;
private Date registryDate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getGuestName() {
return guestName;
}
public void setGuestName(String guestName) {
this.guestName = guestName;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Date getRegistryDate() {
return registryDate;
}
public void setRegistryDate(Date registryDate) {
this.registryDate = registryDate;
}
}
package com.lrr.spring.model;GuestMessageService.javaimport java.util.List;
public class GuestMessageList {
private int totalCount;
private int pageNum;
private int begin;
private int end;
private List<GuestMessage> messages;
public GuestMessageList(int totalCount, int pageNum, int begin, int end, List<GuestMessage> messages){
this.totalCount = totalCount;
this.pageNum = pageNum;
this.begin = begin;
this.messages = messages;
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getBegin() {
return begin;
}
public void setBegin(int begin) {
this.begin = begin;
}
public int getEnd() {
return end;
}
public void setEnd(int end) {
this.end = end;
}
public List<GuestMessage> getMessages() {
return messages;
}
public void setMessages(List<GuestMessage> messages) {
this.messages = messages;
}
}
package com.lrr.spring.service;GuestMessageServiceImpl.javaimport com.lrr.spring.model.GuestMessage;
import com.lrr.spring.model.GuestMessageList;public interface GuestMessageService {
GuestMessage write(GuestMessage message);
GuestMessageList getMessageList(int pageNum);
}
package com.lrr.spring.service;applicationContext.xmlimport java.util.Collections;
import java.util.Date;
import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;import com.lrr.spring.dao.GuestMessageDao;
import com.lrr.spring.model.GuestMessage;
import com.lrr.spring.model.GuestMessageList;public class GuestMessageServiceImpl implements GuestMessageService {
public static final int DEFAULT_PAGE_SIZE = 20;
private int pageSize = DEFAULT_PAGE_SIZE;
private GuestMessageDao guestMessageDao;
@Transactional
public GuestMessage write(GuestMessage message) {
message.setRegistryDate(new Date());
guestMessageDao.insert(message);
return message;
}@Transactional
public GuestMessageList getMessageList(int pageNum) {
int totalCount = guestMessageDao.count();
if(totalCount == 0){
return new GuestMessageList(0,0,0,0,Collections.<GuestMessage> emptyList());
}
int begin = (pageNum-1)* pageSize + 1;
int end = pageNum * pageSize;
if(end > totalCount){
end = totalCount;
}
List<GuestMessage> messages = guestMessageDao.select(begin, end);
return new GuestMessageList(totalCount, pageNum, begin, end, messages);
}
@Autowired
public void setGuestMessageDao(GuestMessageDao guestMessageDao){
this.guestMessageDao = guestMessageDao;
}
public void setPageSize(int pageSize){
this.pageSize = pageSize;
}}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close" p:driverClassName="oracle.jdbc.driver.OracleDriver"
p:url="jdbc:oracle:thin:@localhost:1521:xe" p:username="scott"
p:password="tiger" /><bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource" /><bean id="jdbcTemplateGuestMessageDao" class="com.lrr.spring.dao.JdbcTemplateGuestMessageDao">
<constructor-arg>
<ref bean="dataSource" />
</constructor-arg></bean>
</beans>
- 프레임워크
- 스프링 프레임워크
- 엔터프라이즈
- 엔터프라이즈 빈(MDB(Message-Driven Bean)와 같은것이었다!)
- 엔터프라이즈 어플리케이션
- JEE(Java Enterprise Edition)
- 서블릿
- 트랜잭션
- 세션 빈
- 엔티티 빈
- EJB컨테이너
- 데이터베이스 매핑
- POJO(Plain Old Java Object)
- JPA(Java Persistence API)
- 컴포넌트 기반 개발의 개념
cui환경의 메신저 만들기(미완성) 잡동사니
2011. 12. 8 (20:58)
Client, Server, ServerThread Class 일부 작성. Client에서 Server에 접속은 되지만,
어찌된 영문인지 메세지를 보내도 반응이 없다.
파일명 : Client.java
import java.io.*;
import java.net.*;public class Client {
private String user;
private String id;
private String password;
private BufferedReader in;
private PrintWriter out;
private Socket socket;
public Client() {
in = new BufferedReader(new InputStreamReader(System.in));
Login();
try{
out = new PrintWriter(socket.getOutputStream());
System.out.println(id+" 접속 성공/"+socket);
while(true){
System.out.print("메세지 : " );
String msg = in.readLine();
out.println(msg);
}
}catch(IOException e){
e.printStackTrace();
}
}//하나의 클래스로 뺄 예정.
public void Login() {
while (true) {
try {
System.out.print("id : ");
id = in.readLine();
if(id.equals("")) continue;
System.out.print("password : ");
password = in.readLine();
if(password.equals("")) continue;
} catch (Exception e) {
System.out.println("*");
System.out.println("다시 입력해 주세요.");
System.out.println("*");
}
//DB작업이 들어갈 예정.
if(id.equals("id") && password.equals("pass")){
try{
socket = new Socket("localhost",9212);
}catch(Exception e){
System.out.println("서버에 접속할 수 없습니다.");
}
}
return;
}
}public static void main(String[] args) {
new Client();
}
}
파일명 : Server.java
파일명 : ServerThread.javaimport java.net.*;
import java.io.*;
public class Server {
ServerSocket serversocket = null;
Socket socket = null;
BufferedReader in = null;
public Server() throws IOException{
serversocket = new ServerSocket(9212);
while(true){
try{
socket = serversocket.accept();
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(socket+"님이 접속 하셨습니다.");
ServerThread t = new ServerThread(socket);
t.start();
}catch(IOException e){
e.printStackTrace();
}finally{
}
}
}
public static void main(String[] args)throws IOException {
new Server();
}
}
import java.lang.*;
import java.io.*;
import java.net.*;class ServerThread extends Thread{
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private String msg;
public ServerThread(Socket socket){
this.socket = socket;
}
public synchronized void run() {
try{
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream());
System.out.println("run!");
while(true){
System.out.println("Dd");
msg = in.readLine();
System.out.println(msg);
out.write(msg);}
}catch(IOException e){
e.printStackTrace();
}
}
}
소켓 네트워크를 이용한 멀티채팅 잡동사니
MultiServer.java
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;public class MultiServer {
private ArrayList<MultiServerThread> clientList = new ArrayList<MultiServerThread>();
private ServerSocket server = null;
public MultiServer(){
try{
server = new ServerSocket(5000);
System.out.println("server start..");
while(true){
Socket socket = server.accept();
InetAddress ip = socket.getInetAddress();
String ipAddress = ip.getHostAddress();
System.out.println(ipAddress+" 접속 !");
MultiServerThread t = new MultiServerThread(clientList,socket);
t.start();
clientList.add(t);
}
}catch(IOException e){
System.out.println(e.getMessage());
}
}
public static void main(String[] args){
new MultiServer();
}}
파일명 : MultiServerThread.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.ArrayList;
public class MultiServerThread extends Thread{
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private ArrayList<MultiServerThread> clientList;
public MultiServerThread(ArrayList<MultiServerThread> clientList, Socket socket){
this.socket = socket;
this.clientList = clientList;
}
public synchronized void run(){
try{
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream());
while(true){
String msg = in.readLine();
System.out.println(msg);
broadcasting(msg);
}
}catch(IOException e){
clientList.remove(this);
String ipAddress = socket.getInetAddress().getHostAddress();
try{
broadcasting(ipAddress + "님이 접속종료 하셨음");
}catch(IOException ee){}
}
}
public void broadcasting(String msg) throws IOException{
for(MultiServerThread t : clientList){
t.sendMsg(msg);
}
}
public void sendMsg(String msg) throws IOException{
out.println(msg);
out.flush();
}
}
파일명 : MultiClient.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;public class MultiClient {
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private BufferedReader keyboard;public MultiClient() {
try {
socket = new Socket("localhost", 5000);
System.out.println("서버 접속 완료");
keyboard = new BufferedReader(new InputStreamReader(System.in));
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));MultiClientThread t = new MultiClientThread(in);
t.start();
while (true) {
String text = keyboard.readLine();
out.println(text);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}public static void main(String[] args) {
new MultiClient();}
}
파일명 : MultiClientThread.java
import java.io.BufferedReader;
import java.io.IOException;public class MultiClientThread extends Thread{
private BufferedReader in;
public MultiClientThread(BufferedReader in){
this.in = in;
}
public void run(){
try{
while(true){
String text = in.readLine();
System.out.println("받은 메세지 : " + text);
}
}catch(IOException e){
e.printStackTrace();
}
}
}



