본문 바로가기

회고록(TIL&WIL)

TIL 2023.02.15 Java Web 5 (maven, 어노테이션, mongoDB)

maven

설치확인

mvn --version

프로젝트 생성

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

패키징

mvn package

패키징된 jar파일 실행

java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
>> Hello, world

java 9 이후에서는 maven-compiler-plugin을 추가해줘야한다

<properties>
    <maven.compiler.release>11</maven.compiler.release>
</properties>
<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

명령어 체이닝 가능

mvn clean compile test

Servlet

어노테이션

WAS 컨테이너가 어노테이션이 붙어있는지 확인하여 그에 맞는 일을 수행하는 것
어노테이션 자체가 일을 수행하는 것은 아니고 어노테이션을 누가 인식하느냐에 따라서 기능이 달라질 수 도 있다.
단점은 url이 클래스마다 달려있기 때문에 중복여부를 확인하기 어렵다.
xml은 문법적으로 깐깐하고 속도가 느린 단점으로 xml을 점점 배제하게 되면서 탄생한 것이 Spring boot
@WebServlet( value = {"/ex02.do","/ex02.bit"}, initParams = {@WebInitParam(name = "key2", value = "val2")} )

MongoDB

public class EmpDao {
	com.mongodb.client.MongoClient client;
	String URL = "mongodb://localhost:27018/";
	String DBNAME= "lecture";
	String COLNAME = "emp";
	
	public void updateOne(EmpDto bean) {
		client = MongoClients.create(URL);
		MongoDatabase dbs = client.getDatabase(DBNAME);
		MongoCollection<Document> col = dbs.getCollection(COLNAME);
		
		Bson filter = Filters.eq("_id", bean.getId());
		List<Bson> list = Arrays.asList(
				Updates.set("ename", bean.getEname()),
				Updates.set("ename", bean.getEname()),
				Updates.set("sal", bean.getSal()),
				Updates.set("job", bean.getJob()),
				Updates.set("hiredate", bean.getHiredate())
			);
							
		col.updateOne(filter, list);
		client.close();
	}
	
	public EmpDto selectOne(ObjectId _id) {
		EmpDto bean = new EmpDto();
		client = MongoClients.create(URL);
		MongoDatabase dbs = client.getDatabase(DBNAME);
		MongoCollection<Document> col = dbs.getCollection(COLNAME);
//		Bson filter = new Document("_id", _id);
//		eq(=) lt(<) gt(>) 
		Bson filter = Filters.eq("_id", _id);
		FindIterable<Document> ite = col.find(filter);
		Document doc = ite.first();
		bean.setId(doc.getObjectId("_id"));
		bean.setEmpno(doc.getInteger("empno"));
		bean.setEname(doc.getString("ename"));
		bean.setHiredate(doc.getDate("hiredate"));
		bean.setJob(doc.getString("job"));
		bean.setSal(doc.getInteger("sal"));
		client.close();
		System.out.println(bean);
		return bean;
	}
	
	public void insertOne(EmpDto bean) {
		client = MongoClients.create("mongodb://localhost:27018/");
		MongoDatabase dbs = client.getDatabase("lecture");
		MongoCollection<Document> col = dbs.getCollection("emp");
		Document doc = new Document();
		doc.append("empno", bean.getEmpno());
		doc.append("ename", bean.getEname());
		doc.append("hiredate", bean.getHiredate());
		doc.append("job", bean.getJob());
		doc.append("sal", bean.getSal());
		col.insertOne(doc);
		client.close();
	}
	
	public List<EmpDto> selectAll(){
		List<EmpDto> list = new ArrayList<EmpDto>();
		String url = "localhost";
		int port = 27018;
		MongoClient client = new MongoClient(new ServerAddress(url,port));
		MongoDatabase db = client.getDatabase("lecture");
		MongoCollection<Document> docs = db.getCollection("emp");
		FindIterable<Document> rs = docs.find();
		MongoCursor<Document> ite = rs.iterator();
		while(ite.hasNext()) {
			Document doc = ite.next();
			EmpDto bean = new EmpDto();
			bean.setId(doc.getObjectId("_id"));
			bean.setEmpno(doc.getInteger("empno"));
			bean.setEname(doc.getString("ename"));
			bean.setJob(doc.getString("job"));
			bean.setSal(doc.getInteger("sal"));
			bean.setHiredate(doc.getDate("hiredate"));
			list.add(bean);
		}
		System.out.println(list);
		client.close();
		return list;
	}
}