Is there a way to hibernate macbook then switch to windows? I have installed Windows7 by bootcamp on my Macbook, however, every time when I want to switch to Windows, I have to reboot the machine completely. That means I cannot keep my current workspace when next time I switch back to OSX.

If you use the Mac's hibernate function by the terminal, you don't even have the chance to choose which system to boot from, it immediately wakes up OSX. Sometimes, that's really a pain.

Back to the days of Windows, we used the hibernate function to switch between systems without losing your current workspace. Is there an alternative way to achieve it on Mac?

PS: 
I can not use a virtual machine solution, because it has some hardware disadvantages. Such as the development of Kinect can't work through VM environment.
OS X does not natively hibernate like Windows.

For maximum effectiveness, apply both of these methods:


Install rEFIt.
Start Terminal 
Run /efi/refit/enable.sh
Put the Mac to deep sleep.
When you power up the Mac, the efi menu will appear and you are able to select to boot OS X or Bootcamp.


But, since you have Mac hardware, you should be able to VM OSX.



Secondly, you can try pmset.  You can change it with sudo pmset -a hibernationmode 25.

The pmset man page also recommends using 25 instead of 1.

0000 1000 (bit 3) encourages the dynamic pager to page out inactive pages
prior to hibernation, for a smaller memory footprint.

0001 0000 (bit 4) encourages the dynamic pager to page out more
aggressively prior to hibernation, for a smaller memory footprint.

We do not recommend modifying hibernation settings. Any changes you make
are not supported. If you choose to do so anyway, we recommend using one 
of these three set- tings. For your sake and mine, please don't use 
anything other 0, 3, or 25.

[...]

hibernatemode = 25 (binary 0001 1001) is only settable via pmset. The 
system will store a copy of memory to persistent storage (the disk), and
will remove power to memory. The system will restore from disk image. If
you want "hibernation" - slower sleeps, slower wakes, and better battery 
life, you should use this setting.